使用jQuery提交表单时的竞争条件 [英] Race-condition when submitting form with jQuery

查看:148
本文介绍了使用jQuery提交表单时的竞争条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为了能够使用jQuery提交表单(非ajax),我必须进行一次黑客攻击。



如果我不做 if 语句表单不会提交:

这个工作(表单获取提交)



  $(#myHiddenFieldID).val(JSON.stringify(jsObject)); 
var x = $(#myHiddenFieldID)。val();
if(x){
$(#myHiddenForm)。submit();





这不起作用(表单不会被提交的字段保持为空)


  $(#myHiddenFieldID).val(JSON.stringify(jsObject)); 
var x = $(#myHiddenFieldID)。val();
//我以前在这里放置了一个警报,显示__before__文本出现在文本字段中!!! !!!
$(#myHiddenForm)。submit();

我不明白,为什么我必须阅读这里的textfields内容......

解决方案

由于提升,赋值语句在值传递到文本字段之前执行:

  var x = $(#myHiddenFieldID)。val (); 
$(#myHiddenFieldID)。val(JSON.stringify(jsObject));
$(#myHiddenForm)。submit();


I have to do a hack in order to be able to submit a form (non-ajax) using jQuery.

If I don't do the if statement the form won't submit:

This works (Form gets submitted)

$("#myHiddenFieldID").val(JSON.stringify(jsObject));
var x = $("#myHiddenFieldID").val();
if (x) {
    $("#myHiddenForm").submit();
}

This doesn't work (form does not get submitted field stays empty)

$("#myHiddenFieldID").val(JSON.stringify(jsObject));
var x = $("#myHiddenFieldID").val();
// I used to put an alert here, which was shown __before__ the text appeared in the text field???!!! 
$("#myHiddenForm").submit();

I don't understand, why I have to read the textfields content here...

解决方案

Due to hoisting, the assignment statement is executed before the value is passed to the text field:

var x = $("#myHiddenFieldID").val();
$("#myHiddenFieldID").val(JSON.stringify(jsObject));
$("#myHiddenForm").submit();

这篇关于使用jQuery提交表单时的竞争条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆