1

我的 JavaScript 中有一个“保存”功能,负责在我的服务器上保存一些信息。这个函数会被连续调用多次。我担心比赛条件的形成。出于这个原因,我希望有一种方法可以将状态变量从调用函数 (save) 传递给请求-响应函数 (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");
}
4

2 回答 2

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变量中。

于 2012-04-27T17:05:08.560 回答
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
         );
}
于 2012-04-27T17:40:42.083 回答