我从jquery对这个php函数进行了这个AJAX调用
在更改select box
时,我调用了数据的获取(来自php的100%)
然后我进入$.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;
}
});
答案 0 :(得分:7)
更改
var txt = txt + addCountry(value.country, value.country_uuid);
到
txt = txt + addCountry(value.country, value.country_uuid);
你正在重新声明$ .each回调范围内的变量,所以如果你取出声明,你将使用在on回调中声明的声明。
编辑:
答案 1 :(得分:2)
在函数前声明var txt;
。
在函数内部,使用txt = ...
而非var txt = ...
然后重复使用相同的变量。
答案 2 :(得分:0)
因为你已经在$ .each块中声明了var txt,所以它的范围在该块内。
要使$ .each块之外的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变量。 如果你想要它用于所有数组元素,那么你可以使用另一个数组。