2

在本文末尾的代码中,变量pPrice是通过定义 的$(addProduct).attr(attrProductPrice);,然后在 JSON 调用中设置的, $.getJSON(url, function(data) { console.log(data); pPrice = data.price; }); 但是在同步.getJSON调用之后,该值已返回其原始值。

如何通过.getJSON调用覆盖词法范围变量的定义?源代码缩写为相关部分:

  function addToCart(i,qty){
     var pPrice = $(addProduct).attr(attrProductPrice); //original value
     var url = '/pricefor/' + pId;
     $.getJSON(url, function(data) { console.log(data); pPrice = data.price; }); // new value
     console.log(pPrice); // new value lost! back to original value?!        
  }
4

1 回答 1

3

getJSON调用是异步的。在从服务器检索 JSON 之前,不会调用您的函数。时间线如下所示:

var pPrice = $(addProduct).attr(attrProductPrice);
var url = '/pricefor/' + pId;
$.getJSON(url, blah blah);
console.log(pPrice);

# some time later, when the server responds, your function is called.
console.log(data); pPrice = data.price;
于 2011-09-19T19:41:43.550 回答