我需要从ajax返回值

时间:2016-04-12 19:15:15

标签: javascript jquery html 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

2 个答案:

答案 0 :(得分:1)

您在此处成功设置了值:

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

但是,在调用的代码中,您已成功将其设置为

itemID=callback(value)

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

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

callback(value);

另外,这不会按照您的想法行事:

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

因为getitemIDbyProductID执行异步操作。即使纠正了上述错误,此错误仍然存​​在。这一个是非常流行问题的复制品(答案远比我能提供的好)here

答案 1 :(得分:0)

您可以这样做:

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

基本上,您必须在itemID被赋予正确的值之前等待。