使用jQuery提交表单时的竞争条件

时间:2012-07-12 10:04:52

标签: javascript jquery html json forms

我必须做一个黑客才能使用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();
// I used to put an alert here, which was shown __before__ the text appeared in the text field???!!! 
$("#myHiddenForm").submit();

我不明白,为什么我必须在这里阅读文本域内容...

1 个答案:

答案 0 :(得分:2)

由于hoisting,赋值语句在值传递给文本字段之前执行:

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