使用jQuery调用ajax函数后更新全局变量

时间:2011-06-13 13:48:58

标签: javascript jquery ajax

不确定以下为何不起作用。我希望有人能说清楚。

我有一个全局参数,它重新表示数据库中某个项的某个id。现在,为了检查数据库是否应该更新或者是否应该为项目创建新条目,我在进行ajax调用之前检查是否设置了变量。如果设置了变量,我知道我必须更新数据库,如果没有设置我知道我必须插入数据库。然后在服务器端,我会在插入时返回一个新生成的id,或者在更新的情况下返回旧的id。我使用jQuery表单并按顺序验证插件(因此函数调用ajaxSubmit())。但是,submitHandler的成功函数中的赋值似乎不起作用(我已检查过data.poiId返回可疑结果)。

$(document).ready(function() {

    // Function which examines window.location.href and extracts a numerical id if there is one specified in the query
    var id = getParameter('poiId')

   ...

   },
   submitHandler : function(form) {
       var str = 'submitPOI.php';
       if (id.length > 0) str += '?poiId=' + id;

       $(form).ajaxSubmit({
           url : str,
           type : 'POST',
           dataType : 'json',
           success : function(data) {
               id = data.poiId     // Update POI id with response from server
           } 
       });
   }

   ...
});

1 个答案:

答案 0 :(得分:4)

在我看来,你的id变量不是全局的,因为它在$(document).ready()函数中声明。将其移到函数外部并检查它是否有效。