微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);

原文地址:https://www.jb51.cc/jquery/184394.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐