jeudi 23 juin 2016

JSON.parse throwing Uncaught SyntaxError: Unexpected token s in JSON at position 0

I am trying to get customer details in a Laravel POS application. I am sending customer cell number via AJAX to serch and returning details from controller. When ever I am trying to apply JSON.parse on returned data from server I am getting:

Uncaught SyntaxError: Unexpected token s in JSON at position 0

I cant find errors in my code. I have searched product in exact same way from the server which works fine. Below is my code sample:

My Ajax Function

  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;
                    }     
              }
        });
  }

My Controller Function:

  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);
  }

Response of var_dump($customer) in Network XHR

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

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

IF I dont apply JSON.parse on the returned data in ajax Function and just print the data variable like:

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

this gives output in the consol like:

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

Aucun commentaire:

Enregistrer un commentaire