jQuery ajax成功的匿名函数作用域

如何更新从匿名成功函数内的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);

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...