0

我有一个表,其中包含名称、电子邮件和优先级列。

在页面加载时,我正在遍历表格,并且对于每个表格行,我正在检查优先级字段。如果是 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...
  }
}
4

1 回答 1

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如果or函数有任何范围问题$.getJSON,这有望解决。

于 2013-08-01T15:30:13.717 回答