使用jQuery / PHP / MySQL获得一些奇怪的结果

时间:2009-11-08 12:49:22

标签: javascript jquery

我无法获得预期的结果。

我有以下jQuery脚本:

   // obj is the return result of another query
  jQuery.post("mypath/include/jquery_bll.php", { instance: 'controllAccess', brandID: obj.id },
  function(data)
  {
    if (jQuery('#brand_selectList').length == 0)
    {
      if (data == "Locked")
      {
        jQuery('#countryListBox').attr('disabled','true');
      }
    }
  }, "text");

这样做,如果返回结果=“已锁定”,则禁用选择框。

这是我的PHP代码,它返回结果:

 function controllBrandRelation($dal)
  {
    // Get label data.
    $result = $dal->getRowByValue('myTable','id', $_POST['someID']);

    if (mysql_num_rows($result) > 0)
    {
      while ($row = mysql_fetch_array($result))
      {
        $ownerID = $row["fk_userID"];    
      }
    }

    if(!empty($ownerID))
     echo 'Locked';
    else
      echo 'Open';       
  }

如果$ ownerID有一些值,这将返回'已锁定'。

这是我的问题:
如果我做alert(data.length),我得到结果72.我真的应该得到6,这是“锁定”一词中的字符数。

  jQuery.post("mypath/include/jquery_bll.php", { instance: 'controllAccess', brandID: obj.id },
  function(data)
  {
    alert(data.length);
  }

如果我执行alert(jQuery.trim(data).length),我会得到正确的值。

但无论我做什么,我都无法进入IF测试:

  if (data == "Locked")
  {
    jQuery('#countryListBox').attr('disabled','true');
  }

为什么数据不等于“锁定”?

我已经使用修剪版和未修剪版进行了测试。

更新

我已经设法通过将文本的返回结果更改为json来实现它。 所以现在我查看是否(data.status == "locked"),它运行正常。

但是我真的想知道文本的返回结果是多少76个字符,当它应该是6时。为什么我无法匹配/测试结果。

1 个答案:

答案 0 :(得分:0)

首先,在您将返回值回显给AJAX调用函数后,我不确定您是否正在终止脚本。您可以通过执行以下操作来解决这个问题:

function controllBrandRelation($dal) {
    // Get label data.
    $result = $dal->getRowByValue('myTable','id', $_POST['someID']);
    if (mysql_num_rows($result) > 0) {
        while ($row = mysql_fetch_array($result)) {
            $ownerID = $row["fk_userID"];    
        }
    }
    echo (!empty($ownerID)) ? 'Locked' : 'Open';
    die;

}

其次,如果您能够将值成功减少到6,则应尝试存储该值并在检查中使用该值。您是否尝试提醒您的价值以确定它是否匹配?

jQuery.post("mypath/include/jquery_bll.php", { instance: 'controllAccess', brandID: obj.id }, function(data) {
    data = jQuery.trim(data);
    alert(data);
}