首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ajaxForm异步调用

ajaxForm异步调用
EN

Stack Overflow用户
提问于 2011-12-16 16:37:12
回答 1查看 1.5K关注 0票数 0

在这种情况下,我需要从表单submit()中获取数据。我已经给出了动作中的url和要作为输入元素发送的值。提交的是REST web服务。

我想从提交中检索值,这在普通的form.submit()中是做不到的,因此我必须使用ajaxForm()调用。我认为提到的成功选项的处理程序是在REST方法成功完成之后调用的。我还给出了async:false选项,因为我希望完成调用,然后只继续。

我的问题是,处理程序是在其他代码之后执行的,即在进行调用之后,执行ajax调用之后的代码,然后是处理程序。这是不正确的,如果我给异步:假的,对吗??

这是我的代码供您参考:

代码语言:javascript
复制
 <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的警报才会发生。

请帮我使此呼叫同步!卡维塔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-16 16:42:37

您的AJAX调用是同步的,这只意味着其他AJAX调用必须等待该调用完成。它不会阻止JavaScript引擎进一步执行。我建议不要在这里进行同步调用,这似乎不是你想要的。

您需要确保必须等到AJAX调用之后的所有内容都是由回调调用的,而不是在提交之后立即调用的。

您的问题中没有包含实际初始化ajaxForm的那段代码,但我假设showResponse是在成功的AJAX请求之后调用的,并且您希望在成功请求之后调用alert(tbLHSString);。在这种情况下,您必须将警报移动到showResponse中。

如果它的代码太多,或者由于任何其他原因,您不方便将其放在回调本身中,请将其委托给由回调调用的函数。

代码语言:javascript
复制
$(function () {
    $('#form4').submit();
}

function onFormSubmitted() {
    alert(tbLHSString);
}

function showResponse( ... ) {

    ...

    onFormSubmitted();

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8531615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档