使用jQuery返回async:false的附加属性

时间:2011-09-20 09:34:26

标签: php javascript jquery ajax asynchronous

我正在调用一个返回JSON编码对象的服务器。在我可以继续处理之前必须存在此对象,因此我在请求中设置async:false,如下所示:

    var response = null;
    $.ajax({
        type: 'POST',
        url: 'ajax/test',
        dataType: 'json',
        async: false,
        data : ({data : requests}),
        success: function(data) {
            response = data;
        }
    });

如果设置了async:true,则会返回以下对象:

openGeolocationDialog   Object { show=0, data=""}

如果设置了async:true,我会返回相同的对象,但是有一个额外的'jQuery ...'属性:

openGeolocationDialog   Object { show=0, jQuery16209069375968417921={...}, data=""}

为什么要归还?我该如何压制它?

1 个答案:

答案 0 :(得分:0)

从用户的角度来看,同步请求是不好的:它们会阻止浏览器。

您应该继续处理成功回调:

$.post('ajax/test', {request: data}, function(response) {
     // continue here
});

同时查看Deferred

顺便说一句,如果服务器返回正确的内容类型(即dataType: 'json'),则不需要application/json