2016-06-22 10 views
0

Laravel POSアプリケーションで顧客の詳細を取得しようとしています。私は顧客のセル番号をAJAX経由で送信し、コントローラから詳細を返送しています。これまでサーバーから返されたデータにJSON.parseを適用しようとしています。JSON.parse Throwing Uncaught SyntaxError:JSONの位置0で予期しないトークンが発生する

Uncaught SyntaxError: Unexpected token s in JSON at position 0

私のコードではエラーが見つかりません。私は正常に動作するサーバーから正確に同じ方法で製品を検索しました。

私のAjaxの機能

function customersearch(){ 
     var token=$('input[name=_token]').val(); 
     var baseUrl=document.getElementById("baseUrl").value; 
     var url=baseUrl+"/sales/searchcustomer"; 
     var id=document.getElementById("customercell").value; 

     console.log(id); 

     $.ajax({ 
       type: "GET", 
       headers: {'X-CSRF-TOKEN': token}, 
       url:url, 
       data: {id:id}, 
       datatype:'json', 
       success: function(data) { 
        var returndata =JSON.parse(data); 
        console.log(returndata); 
        var id=returndata[0].id; 
        if(id == "undefined") { 
          alert("No Customer found"); 
        } 
        else { 
          document.getElementById("cname").value = returndata[0].fname; 
          document.getElementById("cid").value = returndata[0].id; 
        }  
       } 
     }); 
    } 

私のコントローラ機能:のvar_dump($の顧客)の

public function searchcustomer(Request $request){ 
     $searchingkey = $request->input('id'); 

     //var_dump($searchingkey); 

     $customer = DB::table('customers') 
        ->where('cellno', $searchingkey) 
        ->get(['id','fname']); 

     var_dump($customer); 

     if (count($customer) == 0) { 
       $data = "No data returned"; // empty result 
     } 
     else { 
       $data = $customer; 
     } 

     return json_encode($data); 
    } 

対応ネットワークXHRで

以下の私のコードサンプルです
array(1) { 
      [0]=> 
       object(stdClass)#221 (2) {["id"]=>string(1) "1" 
             ["fname"]=>string(5) "Ahnaf"}} 

[{"id":"1","fname":"Ahnaf"}] 

私はAjaxの機能で返されたデータにJSON.parseを適用いけないと同じようにデータ変数を印刷する場合:

array(1) { 
     [0]=> 
     object(stdClass)#221 (2) { 
     ["id"]=>string(1) "1" 
     ["fname"]=>string(5) "Ahnaf" 
     } 
     } 
[{"id":"1","fname":"Ahnaf"}] 
+1

でなければなりませんあなたが受け取ったdata'変数 'のログを添付してくださいでしたサーバーから?クライアントが無効な応答を受信したように思えるからです。 –

+0

私の編集を参照してください。クライアントはデータを受信して​​います。 – Ahnaf

+0

最後のコードブロック(サーバーの応答)は無効なJSONなので、解析に失敗します。クライアントは提供された応答の最後の行のみを受け取る必要があります。 –

答えて

0

jquery docs for the ajax functionは言う:

var returndata =data; 
console.log(returndata); 

これは以下のようにコンソルで出力を提供しますdataTypeパラメータの綴りは大文字のTであること。

datatype:'json' 

はこれにそれを変更してみてください:

あなたはこの持ち

dataType:'json' 

をしている場合に役立ちます参照してください。

+0

「T」を使用すると奇妙なことに、クライアントはデータを受信しません。o – Ahnaf

+0

@Ahnaf:「エラー」コールバックを追加します。'エラー:function(xhr、status、message){console.log(status + '' + message); }、 ' – csd

0

get()の代わりにfirst()を試すことができます。 これで解決できるはずです。

+0

nope.itは問題を解決していません。それは – Ahnaf

0

あなたはAjaxのレスポンス

私のコントローラの機能のためにechoではなくreturnを使用する必要があります。

echo json_encode($data); 

また、データ型が

dataType: "json" // but remove this line because your already have JSON.parse(data); 
+0

この人を試してみました..働いていない..私の推測はjsonですencodeは私に無効なjsonを与えていますが、 – Ahnaf

関連する問題