我有一张表,其中包含姓名,电子邮件和优先级列。
在页面加载时,我循环遍历表格,对于每个表格行,我正在检查优先级字段。如果它是N,那么我只为该列显示Low,否则我必须使用ajax发出服务请求并找出优先级是什么。
虽然看起来我正在迭代,正确地发出请求并正确地恢复优先级,但是列上没有显示值。
ajax请求返回具有优先级的JSON对象。
我的猜测是这个不起作用的原因,是因为ajax是一个异步调用,当我得到响应时,我没有指向该行的指针。不过,我不确定这一点。
关于如何改进我的代码的任何想法?
<tr.>.each(function) {
if($(this).find('#priority').text()=='N') {
$(this).find('#priority').text('Low')
} else {
$.ajax(serviceURL
datatype: json,
Success: function(data) {
if(data.priority=='A'){
$(this).find('#priority').text('active');
}
} // if b ,c, etc...
}
}
答案 0 :(得分:3)
首先,让我们修复一下代码,以消除一些语法错误,并可能稍微缩短一下......
$("tr").each(function(){
var thisTr = this;
if ($(this).find('#priority').text()=='N') {
$(this).find('#priority').text('Low');
}
else {
$.getJSON(serviceURL,function(data){
if(data.priority=='A'){
$(thisTr).find('#priority').text('active');
}
// if b ,c, etc...
});
}
}
此外,我不确定这是否会影响任何内容,但请注意thisTr
变量。如果$.ajax
或$.getJSON
函数存在任何范围问题,则可以解决此问题。