在这种情况下,我需要从表单submit()中获取数据。我已经给出了动作中的url和要作为输入元素发送的值。提交的是REST web服务。
我想从提交中检索值,这在普通的form.submit()中是做不到的,因此我必须使用ajaxForm()调用。我认为提到的成功选项的处理程序是在REST方法成功完成之后调用的。我还给出了async:false选项,因为我希望完成调用,然后只继续。
我的问题是,处理程序是在其他代码之后执行的,即在进行调用之后,执行ajax调用之后的代码,然后是处理程序。这是不正确的,如果我给异步:假的,对吗??
这是我的代码供您参考:
<form id="form4" action="http://comp1:8080/RestWSGS/jersey/ExcelHtmlTablePlain" style="display:none"
enctype="multipart/form-data" method="post">
<input id ="username" name="username" type="hidden" />
<input id ="wbk" name="wbk" type="hidden" value="new" />
<input type="submit" style="display:none" />
</form>
$(function () {
$('#form4').submit();
alert(tbLHSString);
}
function showResponse(responseText, statusText, xhr, $form) {
if (xhr.readyState == 4) {
tbLHSString = responseText;
}
alert('status: ' + statusText + '\n\nresponseText: \n' + responseText + '\n\nThe output div should have already been updated with the responseText.');
executed == true;
}在服务器控制台上,我可以看到REST执行得很好。但我得到的变量是未定义的,只有在那时来自showResponse的警报才会发生。
请帮我使此呼叫同步!卡维塔
发布于 2011-12-16 16:42:37
您的AJAX调用是同步的,这只意味着其他AJAX调用必须等待该调用完成。它不会阻止JavaScript引擎进一步执行。我建议不要在这里进行同步调用,这似乎不是你想要的。
您需要确保必须等到AJAX调用之后的所有内容都是由回调调用的,而不是在提交之后立即调用的。
您的问题中没有包含实际初始化ajaxForm的那段代码,但我假设showResponse是在成功的AJAX请求之后调用的,并且您希望在成功请求之后调用alert(tbLHSString);。在这种情况下,您必须将警报移动到showResponse中。
如果它的代码太多,或者由于任何其他原因,您不方便将其放在回调本身中,请将其委托给由回调调用的函数。
$(function () {
$('#form4').submit();
}
function onFormSubmitted() {
alert(tbLHSString);
}
function showResponse( ... ) {
...
onFormSubmitted();
}https://stackoverflow.com/questions/8531615
复制相似问题