将.getJSON()的结果传递给另一个函数会导致未定义

时间:2011-01-31 20:13:20

标签: javascript json jquery

大家好日子,

我使用jQuery的.getJSON()方法从数据库(通过PHP脚本)撤回一些数据。这一切都很好,数据恢复正常并且符合预期。当我尝试将数据传递给辅助函数时,无论我如何尝试访问它们作为未定义返回的数据的值,都会出现问题。我有一种感觉,我忽略了一些非常简单的事情,但经过大量的反复试验,我来到SO那里寻求额外的一双眼睛。

以下是JavaScript代码的一个简单示例。

  function fnCheck_Vis(Row, sField, sMode)
  {
    sField = sField+"_vis";
    sTest = Row.sField.val();
    alert(sTest); // Comes back as undefined.
  }

  $(document).ready(function()
  {
    $("#btnSearch").click(function()
    {
      $("#divResults").empty();
      var ssearch = $("#ssearch").val();
      var i = 0;
      $.getJSON("get_results.php?keywords=" + ssearch,
      function(Data)
      {
        var iRec = 0;
        $.each(Data, function(i, Row)
        {
          fnCheck_Vis(Row, "slinkpic1", "Int");
          var content = Row.slast;
          $("#divResults").append(content);
          iRec++;
        });
        alert(iRec + " records retrieved using AJAX.");            
      });
    });
  });

fnCheck_Vis()函数的第一部分工作正常,“_vis”附加到字段名称,这是正确的行为。无论我如何尝试访问数据集(行)中的成员,我都无法获得值。

我非常感谢能够在这个问题上提供任何见解。

谢谢,

尼古拉斯

1 个答案:

答案 0 :(得分:3)

您好像想要访问名称存储在Row中的sField的属性,而不是其实际的sField属性。尝试:

function fnCheck_Vis(Row, sField, sMode)
{
    sField = sField + "_vis";
    var sTest = Row[sField];
    alert(sTest);
}