<script>
$(document).ready(function () {
var chanels_elems = document.getElementsByClassName('chanels');
var ids = [];
var urls = [];
var i = 0;
for (i = 0; i < chanels_elems.length; i++) {
ids[i] = chanels_elems[i].id;
urls[i] = $('#' + ids[i]).attr('url');
}
for (i = 0; i < chanels_elems.length; i++) {
var id = ids[i];
$.ajax({
url: '{{ Url.media('ajax/testajax') }}',
dataType: 'json',
data: {id: ids[i], url: urls[i]},
type: 'POST',
success: function (result) {
if (result.status == '1') {
$('#span_' + result.id).attr('class', 'label label-success').empty().append('true');
}
if (result.status == '2') {
$('#span_' + result.id).attr('class', 'label label-danger').empty().append('false');
}
},
error: function (xhr) {
$('#span_' + ids[i]).attr('class', 'label label-info').empty().append('error');
}
});
}
});
</script>
错误处理程序中的ids[i]未定义,var id=ids[i];也未定义。为什么?我该怎么处理这个问题?错误处理程序中的ids[i]未定义,var id=ids[i];也未定义。为什么?我该怎么处理这个问题?
这是一种非常糟糕的ajax调用方式。只对所有id和url进行一次ajax调用。发回一个包含id和状态的数组。把这个用于你的JS。如果你能展示你的php页面,我也可以帮你。试试这个
var myArr={};
$('.chanels').each(function(){
myArr[$(this).attr('id')]=$(this).attr('href');//Use whatever you need about the url.
});
$.ajax({
type:'POST',
url:'your url',
data:myArr,
dataType:'JSON',
success:function(result)
{
}
});
你ping服务器的次数太多了。
注意,当调用回调时,var i在数组的最后一个值中。你应该使用传递变量的副本。类似的东西。
for (i = 0; i < chanels_elems.length; i++) {
(function(i) {
var id = ids[i];
$.ajax({
url: '{{ Url.media('ajax/testajax') }}',
dataType: 'json',
data: {id: ids[i], url: urls[i]},
type: 'POST',
success: function (result) {
if (result.status == '1') {
$('#span_' + result.id).attr('class', 'label label-success').empty().append('true');
}
if (result.status == '2') {
$('#span_' + result.id).attr('class', 'label label-danger').empty().append('false');
}
},
error: function (xhr) {
$('#span_' + ids[i]).attr('class', 'label label-info').empty().append('error');
}
});
})(i);
}
并尝试查看console.log(id(;在最后一个"for"之前。