2011-11-03 46 views
2

好的,所以我需要在执行实际的AJAX请求之前打开一个对话框(jQuery UI),并根据用户选择的内容继续AJAX请求或者什么也不做。jQuery:正确发出同步请求

不幸的是,函数似乎是提前返回而完全忽略同步请求。我究竟做错了什么?

下面的代码:

function saveSomeStuff(value) { 
    var returnvalue = this.revert; 

    $("#dialog").dialog({ 
     draggable: false, 
     buttons: { 
      "OK": function() { 
       $(this).dialog("close"); 
       returnvalue = $.ajax({ 
        type: "POST", 
        url: config.someUrl, 
        async: false, 
        data : {/* some data */} 
       }).responseText; 
      }, 
      "Cancel": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 

    return returnvalue; 

} 

回答

2
$.ajax({ 
     type: "POST", 
     url: config.someUrl, 
     async: true, 
     data : {/* some data */}, 
     success : function (data) { *YOUR LOGIC HERE*} 
}) 

附:避免各地的同步请求。

+0

你是什么意思“P.S.避免同步请求无处不在。”? –

+1

我的意思是说,同步请求是非常糟糕的做法。 – griZZZly8

+2

如果您有资格证明关于同步请求不好的陈述,那将会很有用。你从哪里听到这个消息?你能发布一个链接来讨论这个问题吗?它有什么不好的原因?这是安全吗?跨平台的东西?等... –