我需要从ajax返回值



我需要从ajax返回值,但它每次都填充0,并且没有等待ajax进程完成var itemId=0;作为全局值

getitemIDbyProductID(productId,getitemIDbyProductID_success);               
                 alert(itemID + "itemgeted")

我做了这个

  function getitemIDbyProductID(productId, callback) {
            $.ajax({
                type: "POST",
                url: "Cot.aspx/getitemIDbyProductID",
                data: JSON.stringify({ productId: productId }),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (result) {
                    var value = 0;
                   value = JSON.parse(result.d);
                    itemID=callback(value)
                  callback(value);
                },
                error: function (msg) {    }
            }); 
        }
        function getitemIDbyProductID_success(total_percentage) {      
              alert(total_percentage +"fds"+itemID);
        }

但它没有等到ajax完成,并给了我itemId=undefiend

您在此处成功设置了值:

function getitemIDbyProductID_success(total_percentage) {
    itemID = total_percentage;
    alert(total_percentage +"fds"+itemID);
}

但是,在调用this的代码中,您成功地再次设置了

itemID=callback(value)

由于getitemIDbyProductID_success不返回任何内容,因此返回值为undefined。所以基本上你在设置itemID后立即取消设置

只需调用回调,不要使用其(不存在的)返回值:

callback(value);

此外,这不会像你想的那样:

getitemIDbyProductID(productId,getitemIDbyProductID_success);               
alert(itemID + "itemgeted");

因为getitemIDbyProductID执行异步操作。即使上述错误得到纠正,这个错误仍然存在。这是一个非常流行的问题的副本(答案比我能提供的要好得多)。

您可以这样做:

getitemIDbyProductID(productId,function(val){
  itemID = val;
  alert(itemID + "itemgeted");
});

基本上,您必须等待itemID被分配正确的值。

相关内容

  • 没有找到相关文章

最新更新