Javascript JQuery无法解析由JSON_encode创建的JSON字符串
我目前处于绑定状态,JQuery无法解析以下json字符串Javascript JQuery无法解析由JSON_encode创建的JSON字符串,javascript,php,jquery,json,parsing,Javascript,Php,Jquery,Json,Parsing,我目前处于绑定状态,JQuery无法解析以下json字符串 { "query":"Unit", "suggestions": [ {"value":"Mr Ruto Kimutai ","data":88},{"value":"Mr Kimani Karanja","data":79} ] } {"query":"Unit", "suggestions": [{"value":"Mr Ruto Kimutai ","data":88},{"value":"Mr Kimani Karanj
{ "query":"Unit",
"suggestions":
[ {"value":"Mr Ruto Kimutai ","data":88},{"value":"Mr Kimani Karanja","data":79} ] }
{"query":"Unit",
"suggestions":
[{"value":"Mr Ruto Kimutai ","data":88},{"value":"Mr Kimani Karanja","data":79}]}
通过JSON.parse进行解析时,上面的字符串将创建以下arror:
SyntaxError:JSON.parse:后面出现意外的非空白字符
JSON数据第1行第112列的JSON数据
创建上述字符串的PHP代码如下:
public function getCustomerSuggestions($name){
$customers = $this->model->where('name','LIKE','%'.$name.'%')->show();
if(count($customers)>=1){
foreach($customers as $customer){
$list[] = ['value' => ucfirst($customer->name),'data' => $customer->id];
}
}
else{
$list[] = ['value' => 'No Customers Found', 'data'=> NULL];
}
$full_list['query'] = 'Unit';
$full_list['suggestions'] = $list;
return json_encode($full_list);
}
如您所见,我正在使用函数json_encode创建json字符串,因此应该没有问题,但它仍然不起作用
编辑
json使用名为DevBridge autocomplete的自动完成工具发送,该工具接受json字符串并创建建议列表。我使用的代码是
$('input[name=\"customer\"]').devbridgeAutocomplete({
serviceUrl: '".SITE_PATH."/ajax/admin/quotes/getcustomer',
minChars: 1,
onSearchStart: function (query){
var searchinput = $(this).val();
$('.autocomplete-suggestions').html('Searching: '+searchinput);
},
onSelect: function(suggestion){
var selection = $(this).val(suggestion.value);
$('input[name=\"customerid\"]').val(suggestion.data);
$.get('".SITE_PATH."/ajax/admin/quotes/getcustomerdetails',{id: suggestion.data},
function(response){
var obj = $.parseJSON(response);
$.each(obj, function(key, value){
$('#'+key).val(value);
});
});
}
});
看起来有两个JSON对象在后面。那完全是无效的。JSON“文档”的根只能有一个值。如果要向下发送多个对象,需要将它们放入一个数组中
似乎
getCustomerSuggestions
被多次调用,每次调用的返回值都返回给客户端。相反,该方法应该返回一个数组,调用方应该收集数组中的返回值,并对该数组进行JSON编码。似乎有两个JSON对象在后面。那完全是无效的。JSON“文档”的根只能有一个值。如果要向下发送多个对象,需要将它们放入一个数组中
似乎
getCustomerSuggestions
被多次调用,每次调用的返回值都返回给客户端。相反,该方法应该返回一个数组,调用方应该收集数组中的返回值,并对该数组进行JSON编码。好的,您的JSON字符串无效。
应该是,
[
{ "query":"Unit",
"suggestions":
[ {"value":"Mr Ruto Kimutai ","data":88},{"value":"Mr Kimani Karanja","data":79} ] }
,
{"query":"Unit",
"suggestions":
[{"value":"Mr Ruto Kimutai ","data":88},{"value":"Mr Kimani Karanja","data":79}]}
]
但正如Felix Kling所说,请检查您的PHP代码。嗯,您的JSON字符串无效。 应该是,
[
{ "query":"Unit",
"suggestions":
[ {"value":"Mr Ruto Kimutai ","data":88},{"value":"Mr Kimani Karanja","data":79} ] }
,
{"query":"Unit",
"suggestions":
[{"value":"Mr Ruto Kimutai ","data":88},{"value":"Mr Kimani Karanja","data":79}]}
]
但正如Felix Kling所说,请检查您的PHP代码。请添加jqueryare代码是两个单独的字符串还是一个?请添加jqueryare代码是两个单独的字符串还是一个?问题是代码会在每次渐进按键时生成一个列表。那么每个列表都是动态生成的吗?我假设每次击键都是一个单独的请求,是不是?唯一重要的是每个请求的响应都是有效的。好的,让我来跟踪每个响应是如何产生的问题是代码在每次渐进式按键时都会生成一个列表。那么每个列表都是动态生成的吗?我假设每次击键都是一个单独的请求,是不是?唯一重要的是每个请求的响应都是有效的。好的,让我来跟踪每个响应是如何做出的