我对jquery中的php函数进行了AJAX调用
在更改select box
时,我调用它来获取数据(它100%来自php)
然后,我进入$.each
区域,将数据处理到列表中
该列表在txt
变量中生成,但其作用域仅适用于$.each
块。
如何将其传回外部(第二个console.log(txt);
)
$('#selectMain').on('change', function(){
var txt = '';
var argument = $('#selectMain').val();
$.ajax({
type: 'POST',
url: './inc/ListManagerScripts.php?argument='+argument,
success: function(json){
var countries = [];
var countries_uuid = [];
data = $.parseJSON(json);
$.each(data, function(key, value) {
//append countries
if($.inArray( value.country_uuid, countries_uuid ) == -1 ){
countries.push(value.country);
countries_uuid.push(value.country_uuid);
var txt = txt + addCountry(value.country, value.country_uuid);
}
console.log(txt);
});
console.log(txt);
}
});
var addCountry = function(country, uuid){
var snip = '';
snip = snip + "<div class='expandListHeader'>";
snip = snip + "<div class='expandListHeaderRow' ctryID='"+uuid+"'>"+country+"</div>";
snip = snip + "</div>"
snip = snip + "<div class='expandListContent'>";
snip = snip + "<div class='expandListContentRow contentCol2'>";
snip = snip + "</div>";
snip = snip + "</div>";
return snip;
}
});
更改
var txt = txt + addCountry(value.country, value.country_uuid);
至
txt = txt + addCountry(value.country, value.country_uuid);
您正在$.each回调范围内重新声明变量,因此如果去掉声明,您将使用on回调内声明的声明。
编辑:
相关读数
在函数之前声明var txt;
。
在函数内部,使用txt = ...
而不是var txt = ...
这将重用相同的变量。
因为您已经在$.each块中声明了var.txt,所以它的作用域在该块内。
要使$.外的txt每个块更改为以下
var txt;
$.each(data, function(key, value) {
//append countries
if($.inArray( value.country_uuid, countries_uuid ) == -1 ){
countries.push(value.country);
countries_uuid.push(value.country_uuid);
txt = txt + addCountry(value.country, value.country_uuid);
}
console.log(txt);
});
您将在$.each函数中重新定义txt变量。如果你想要它用于所有的数组元素,那么你可以使用另一个数组。