如何更新从匿名成功函数内的returnHtml变量?
function getPrice(productId,storeId) { var returnHtml = ''; jQuery.ajax({ url: "/includes/unit.jsp?" + params,cache: false,dataType: "html",success: function(html){ returnHtml = html; } }); return returnHtml; }
解决方法
这是错误的方法。 AJAX中的第一个A是异步的。该函数在AJAX调用返回之前返回(或至少它可以)。所以这不是范围的问题。这是一个订购的问题。只有两个选项:
>使用async: false
选项使AJAX呼叫同步(不推荐)要么
>改变你的思维方式。不是从函数返回HTML,而是需要传递一个回调,以便在AJAX调用成功时调用。
作为(2)的示例:
function findPrice(productId,storeId,callback) { jQuery.ajax({ url: "/includes/unit.jsp?" + params,success: function(html) { callback(productId,html); } }); } function receivePrice(productId,html) { alert("Product " + productId + " for storeId " + storeId + " received HTML " + html); } findPrice(23,334,receive_price);