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