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

前端之家收集整理的这篇文章主要介绍了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);

猜你在找的jQuery相关文章