簡體   English   中英

jQuery無法解析json_encode創建的JSON字符串

[英]JQuery unable to parse JSON string created by json_encode

我目前處於綁定狀態,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字符串,因此應該沒有問題,但仍然無法正常工作。

編輯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字符串無效。 它應該是,

[
  { "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代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM