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

Javascript 使用jQuery提交表单时的竞争条件,javascript,jquery,html,json,forms,Javascript,Jquery,Html,Json,Forms,为了能够使用jQuery提交表单(非ajax),我必须做一个hack 如果我不做如果声明,表格将不会提交: 此工程(表格已提交) 这不起作用(表单未提交字段保持为空) 我不明白,为什么我必须阅读这里的文本字段内容…因为赋值语句是在值传递到文本字段之前执行的: var x = $("#myHiddenFieldID").val(); $("#myHiddenFieldID").val(JSON.stringify(jsObject)); $("#myHiddenForm").submit();

为了能够使用jQuery提交表单(非ajax),我必须做一个hack

如果我不做
如果
声明,表格将不会提交:

此工程(表格已提交) 这不起作用(表单未提交字段保持为空) 我不明白,为什么我必须阅读这里的文本字段内容…

因为赋值语句是在值传递到文本字段之前执行的:

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

代码在哪里?我想是在某种onclick处理器里面吧?这也在
$(document.ready(function(){})中块?@JonTaylor似乎是对的。您的表单是否意外提交。您能看到控制台中是否有任何错误吗?发布最小JSFIDLE来重现它也许这段代码执行了两次,在这种情况下添加if(x)语句可以防止第一次错误运行。
$("#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();
var x = $("#myHiddenFieldID").val();
$("#myHiddenFieldID").val(JSON.stringify(jsObject));
$("#myHiddenForm").submit();