Jquery循环遍历表并发出ajax请求

时间:2013-08-01 15:07:53

标签: jquery ajax

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

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

1 个答案:

答案 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函数存在任何范围问题,则可以解决此问题。