我从一个.post之后调用的.each得到了未定义的结果。以下是我的代码。
的Javascript
var index=0;
$("td.load_ads").each(function(){
var loading=$(this);
$.post('/self_coded_helpers/jpost_get_ads.php',{index:index,type:'fetch_id'},function(data){
if($("input.exist").length > 0){
$("input.exist").each(function(){
if($(this).val()==data){
var load='0';
}else{
var load='1';
}
});
}else{
var load='1';
}
alert(load);
if(load == 1){
$.post('/self_coded_helpers/jpost_get_ads.php',{index:index,type:'fetch_details',id:data},function(data2){
$("body").append('<input type="hidden" class="exist" name="exist" value="'+data+'">');
if(data2!=0){
loading.html(load+'--'+data2);
}else{
loading.html("Place a Free Ad Now!");
}
});
}else{
loading.html(load+"--"+data+"Place a Free Ad Now!");
}
});
index=index+1;
});
我在这里尝试做的是在每个td.load_ads上启动一个.post,之后用每个现有的input.val检查数据。如果每个现有输入的输入值与收集的数据相同,那么我将不会回显第二个.post结果。
但是,整个操作似乎没有正确显示。我意识到我的问题是在.post之后的.each。当我做我的警报(加载)。返回的结果未定义。我错过了什么或者我的编码在逻辑上是不正确的吗?任何帮助将不胜感激。
/ * 已添加问题 / *
所以现在,我还有另一个问题,所以我想也可以在这里添加它。
我尝试附加输入
($(“body”)。append('');)
在剧本的第二部分。
因此,当循环重复时,它将能够读取输入并接收新添加的输入值。但是我的加载总是返回1,因为我的$(“input.exist”)。length总是返回false。
或者这对jquery不可能吗?
/ * 已添加问题的结尾 / *
答案 0 :(得分:3)
您需要提前声明load
变量。现在,你在匿名函数中声明它两次,变量的范围将限于该函数;从外部函数的角度来看,var load = ...;
语句将具有无可观察的效果。
请改为尝试:
var load = '1';
if($("input.exist").length > 0){
$("input.exist").each(function(){
if($(this).val()==data){
load='0';
}else{
load='1';
}
});
}
alert(load);