JQuery无法解析json_encode创建的JSON字符串

时间:2016-06-02 17:43:03

标签: 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 Karanja","data":79}]}

通过JSON.parse解析时的上述字符串会产生以下错误:

  

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字符串,因此应该没有问题,但它仍然无效。

编辑 使用名为DevBridge Autocomplete的自动完成工具发送json,该工具接收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);
                            });
                        });
                }
            });

2 个答案:

答案 0 :(得分:3)

看起来你有两个JSON对象。那简直无效。 JSON“文档”的根目录中只能有一个值。如果要发送多个对象,则需要将它们放在一个数组中。

似乎多次调用getCustomerSuggestions并且每个调用的返回值都返回给客户端。相反,该方法应该返回一个数组,调用者应该收集数组中的返回值,JSON编码该数组。

答案 1 :(得分:0)

好吧,你的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代码。