繁体   English   中英

在$ .each()函数之外访问JavaScript变量

[英]Accessing JavaScript variable outside of $.each() function

我无法将$ .each()函数中声明的变量传递给Prototype函数。 我收到错误Uncaught ReferenceError: prices is not defined

Compare.prototype.results = function (answers) {

    $.ajax({
        type: 'POST',
        dataType: 'json',
        data: {
            answers: answers
        },

        success: function (data) {

            $.each(data, function (index, dataItem) {

                var prices = [],
                    priceData = dataItem.pricing_term,
                    priceObj = JSON.parse(priceData);

                $.each(priceObj, function (term, pricing) {
                    prices.push(term, pricing);
                });

            });
            Compare.prototype.show(data, prices);
        }

    });
}

我希望能够填充价格变量并将其传递给最初从ajax调用返回的数据。 我是javascript的新手,如果有更清晰的方式来写这个请告诉我。

它超出了范围

Compare.prototype.results = function (answers) {

    $.ajax({
        type: 'POST',
        dataType: 'json',
        data: {
            answers: answers
        },

        success: function (data) {

            var prices = [];


            $.each(data, function (index, dataItem) {
                var priceData = dataItem.pricing_term,
                    priceObj = JSON.parse(priceData);

                $.each(priceObj, function (term, pricing) {
                    prices.push(term, pricing);
                });

            });

            // same scope

            Compare.prototype.show(data, prices);
        }

    });
}

您已将您的prices数组声明在第一个&.each函数的范围内。 这意味着您只能访问该函数中的prices数组。 您需要在函数之外声明prices ,如下所示:

Compare.prototype.results = function (answers) {

$.ajax({
    type: 'POST',
    dataType: 'json',
    data: {
        answers: answers
    },

    success: function (data) {

        var prices = [];

        $.each(data, function (index, dataItem) {

               var priceData = dataItem.pricing_term;
               var priceObj = JSON.parse(priceData);

            $.each(priceObj, function (term, pricing) {
                prices.push(term, pricing);
            });

        });
        Compare.prototype.show(data, prices);
    }

});
}

这样, prices可以在AJAX请求的success函数范围内的任何函数中获得。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM