在AJAX请求响应之间传递状态信息

时间:2012-04-27 17:00:00

标签: jquery ajax

我的JavaScript中有一个“保存”功能,负责在我的服务器上保存一些信息。此函数将连续多次调用。我担心比赛条件的形成。出于这个原因,我希望有一种方法可以将状态变量从我的调用函数(保存)传递给我的请求 - 响应函数(save_Succeeded)。这样,我一定会知道哪个项目已成功保存。反正有没有这样做?目前,我有以下内容,但我不知道如何传递状态变量。谢谢!

function save(item) {
  $.ajax({
    url: getUrl(),
    type: "POST",
    data: JSON.stringify(item),
    contentType: "application/json",
    success: save_Succeeded
  });
}

function save_Succeeded(result) {
  alert("Display Saved Item ID here");
}

2 个答案:

答案 0 :(得分:0)

当然,这非常重要。以下是我的一个AJAX调用示例:

    $.ajax({
        url: "/phpAJAX/save_data.php",
        type: "post",
        data : querystring + "&schema=" + schema + "&table=" + table,
        success: function(data){
            if (data != "Data saved successfully."){
                show_dialog(data);
            }else{
                show_dialog(data,"bad");
            }
        }
    });

如果你这样做

success: function(data)

data变量将包含服务器响应中返回的数据。您可以控制服务器响应以获得成功或失败。你看到这里,我检查确保数据是“数据保存成功。”,如果不是我知道有错误,我显示该错误信息。

在您的情况下,您必须更改服务器代码以返回已保存数据的ID(如果成功),然后它将包含在data变量中。

答案 1 :(得分:0)

使用complete选项也可以获得ajax调用的状态。像这样:

function save(item) {
   $.ajax({
      url: getUrl(),
      type: "POST",
       data: JSON.stringify(item),
       contentType: "application/json",
       complete : function(xhr, responseText, thrownError) {
          //request is complete
          save_Succeeded(xhr.status, responseText);
       }
    });
}

现在save_Succeeded()就像:

function save_Succeeded(status, result) {
    alert("Status ---------> " + status +
          "Result ---------> " + result
         );
}