ajax为什么能异步,同步AJAX调用的问题,它为什么会对我异步?

我试图从剪切和粘贴代码保持所以我做了一个包装的数据保存到Web服务器:同步AJAX调用的问题,它为什么会对我异步?

function saveData(newData) {

//clear our error message out.

$("#Status").html("");

var anID;

//save the data to the server

$.ajax({

type: "POST",

url: "/John/SaveSomeData",

data: JSON.stringify(newData),

async: false,

contentType: 'application/json; charset=utf-8',

datatype: "json",

traditional: false,

success: function (sReturn) {

anID = parseInt(sReturn);

if (isNaN(anID)) {

$("#Status").html("Error: " + sReturn);

return -1;

}

}

}); //end AJAX call

return anID;

} //end save data

基本上,函数返回以上的正整数,如果它的工作和-1,如果它得到了来自服务器的错误。如果数据已成功添加,则Web服务器返回一个整数值,如果发生错误,则返回一些文本。

发送和返回是以字节为单位......有绝对最差的情况是200个字节(是的,字节,而不是千,万,或千兆...只是个字节),所以我跟不关心数据发送大量数据的可能性以及处理它的时间。

我使用上面的代码如下(一个在添加按钮另一个在保存按钮):

$("#addButton").click(function (event) {

//validate data locally

//cut some unimportant code

var newData = /*newdata junk cut*/

var myID = saveData(newData);

if (myID != -1) {

//cut code for adding result to a list

//snip the rest of the code

我遇到的明显的问题是jquery的触发的AJAX调用,并继续在不等待阿贾克斯呼吁完成。基本上,服务器可能会返回“未能添加”,并且“添加按钮事件”会继续像成功一样进行处理。

的数据被正确地发送到web服务器是好的,处理,和响应从网络服务器正确。这纯粹是同步/异步问题,而不是服务器的数据。

我的理解是“异步:假”行应强制jQuery来等待Ajax调用在做任何事情之前完成。

上添加对保存会发生什么编码是不同的。因此,我不想在与阿贾克斯的代码。

我需要ajax的部分转化为更多的东西一样:

var ajaxReturn = $.ajax({

type: "POST",

url: remote_url,

async: false, }).responseText;

ajaxReturn.done(function(msg) {

$("#log").html(msg);

});

ajaxReturn.fail(function(jqXHR, textStatus) {

alert("Request failed: " + textStatus);

});

+0

'async:false' = 99%你有可能做错了。 –

2012-04-09 20:19:55

+0

@詹姆斯......我想说,如果它不工作,我可能不是在做正确的...有什么要补充的可能解决这个问题? –

2012-04-11 20:53:52

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值