Jquery 自动完成错误,null不是对象,即仅

Jquery 自动完成错误,null不是对象,即仅,jquery,autocomplete,Jquery,Autocomplete,以下代码在Chrome/FireFox中运行良好,但在IE中出现错误。该错误显示消息 消息:“name”为空或不是 反对 我知道有很多相关的问题。但他们似乎在某些方面有所不同。所以,请帮忙。谢谢(错误发生在第7行) 这个问题已经解决了好几个月了。抱歉这么晚才回答。注意jQuery的自动完成,数组的数据源应该是干净的,没有多余的逗号,这很容易被忽略。在我的问题中,“downloads/get_keywords”是一个自定义PHP函数,它返回自动完成下拉框中列出的数组。但是,如果使用foreach收

以下代码在Chrome/FireFox中运行良好,但在IE中出现错误。该错误显示消息

消息:“name”为空或不是 反对

我知道有很多相关的问题。但他们似乎在某些方面有所不同。所以,请帮忙。谢谢(错误发生在第7行)


这个问题已经解决了好几个月了。抱歉这么晚才回答。注意jQuery的自动完成,数组的数据源应该是干净的,没有多余的逗号,这很容易被忽略。在我的问题中,“downloads/get_keywords”是一个自定义PHP函数,它返回自动完成下拉框中列出的数组。但是,如果使用foreach收集数组,则可能不关心数组末尾的额外逗号。但是IE(只)讨厌额外的逗号。要解决这个问题,只需将其移除,问题就解决了

$return_data=“”

foreach($key=>$value的项目){

if(strpos(strtolower($key),$q)!==false){

}

}

$return\u数据= substr_replace($return_data,,-2); //我讨厌多加逗号

回显“[”.$return_data.]”


尝试使用以下功能:

function json_encode_string($in_str)
{
  mb_internal_encoding("UTF-8");
  $convmap = array(0x80, 0xFFFF, 0, 0xFFFF);
  $str = "";
  for($i=mb_strlen($in_str)-1; $i>=0; $i--)
  {
    $mb_char = mb_substr($in_str, $i, 1);
    if(mb_ereg("&#(\\d+);", mb_encode_numericentity($mb_char, $convmap, "UTF-8"), $match))
    {
      $str = sprintf("\\u%04x", $match[1]) . $str;
    }
    else
    {
      $str = $mb_char . $str;
    }
  }
  return $str;
}

function php_json_encode($arr)
{
  $json_str = "";
  if(is_array($arr))
  {
    $pure_array = true;
    $array_length = count($arr);
    for($i=0;$i<$array_length;$i++)
    {
      if(! isset($arr[$i]))
      {
        $pure_array = false;
        break;
      }
    }
    if($pure_array)
    {
      $json_str ="[";
      $temp = array();
      for($i=0;$i<$array_length;$i++)       
      {
        $temp[] = sprintf("%s", php_json_encode($arr[$i]));
      }
      $json_str .= implode(",",$temp);
      $json_str .="]";
    }
    else
    {
      $json_str ="{";
      $temp = array();
      foreach($arr as $key => $value)
      {
        $temp[] = sprintf("\"%s\":%s", $key, php_json_encode($value));
      }
      $json_str .= implode(",",$temp);
      $json_str .="}";
    }
  }
  else
  {
    if(is_string($arr))
    {
      $json_str = "\"". json_encode_string($arr) . "\"";
    }
    else if(is_numeric($arr))
    {
      $json_str = $arr;
    }
    else
    {
      $json_str = "\"". json_encode_string($arr) . "\"";
    }
  }
  return $json_str;
}

你能给我们举一个
下载/get_关键字
返回的例子吗?我猜里面有一些只有IE讨厌的逗号。谢谢Ryley,你说得对。我关注的是json脚本,但没有检查“downloads/get_keywords”提供的数据源。是的。请你回答我的问题好吗?然后我可以标记这个问题已解决。此时最好自己回答(根据常见问题解答,这很好)-向我们展示坏数据的样子以及您如何修复它。
  $return_data .= "{ name: \"$key\", to: \"$value\" }, ";
function json_encode_string($in_str)
{
  mb_internal_encoding("UTF-8");
  $convmap = array(0x80, 0xFFFF, 0, 0xFFFF);
  $str = "";
  for($i=mb_strlen($in_str)-1; $i>=0; $i--)
  {
    $mb_char = mb_substr($in_str, $i, 1);
    if(mb_ereg("&#(\\d+);", mb_encode_numericentity($mb_char, $convmap, "UTF-8"), $match))
    {
      $str = sprintf("\\u%04x", $match[1]) . $str;
    }
    else
    {
      $str = $mb_char . $str;
    }
  }
  return $str;
}

function php_json_encode($arr)
{
  $json_str = "";
  if(is_array($arr))
  {
    $pure_array = true;
    $array_length = count($arr);
    for($i=0;$i<$array_length;$i++)
    {
      if(! isset($arr[$i]))
      {
        $pure_array = false;
        break;
      }
    }
    if($pure_array)
    {
      $json_str ="[";
      $temp = array();
      for($i=0;$i<$array_length;$i++)       
      {
        $temp[] = sprintf("%s", php_json_encode($arr[$i]));
      }
      $json_str .= implode(",",$temp);
      $json_str .="]";
    }
    else
    {
      $json_str ="{";
      $temp = array();
      foreach($arr as $key => $value)
      {
        $temp[] = sprintf("\"%s\":%s", $key, php_json_encode($value));
      }
      $json_str .= implode(",",$temp);
      $json_str .="}";
    }
  }
  else
  {
    if(is_string($arr))
    {
      $json_str = "\"". json_encode_string($arr) . "\"";
    }
    else if(is_numeric($arr))
    {
      $json_str = $arr;
    }
    else
    {
      $json_str = "\"". json_encode_string($arr) . "\"";
    }
  }
  return $json_str;
}
echo php_json_encode($MyObject);
// The var "$MyObject" is what you want to encode as json
// If you're using PHP >= 5.20, you'll have this function implemented as "json_encode"