【发布时间】:2016-10-24 21:12:59
【问题描述】:
我正在尝试在 Laravel POS 应用程序中获取客户详细信息。我通过 AJAX 将客户手机号码发送到 serch 并从控制器返回详细信息。当我尝试对从服务器返回的数据应用 JSON.parse 时,我得到:
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;
}
}
});
}
我的控制器功能:
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 中 var_dump($customer) 的响应
array(1) {
[0]=>
object(stdClass)#221 (2) {["id"]=>string(1) "1"
["fname"]=>string(5) "Ahnaf"}}
[{"id":"1","fname":"Ahnaf"}]
如果我不对 ajax 函数中返回的数据应用 JSON.parse 并且只打印数据变量,例如:
var returndata =data;
console.log(returndata);
这会在控制台中提供如下输出:
array(1) {
[0]=>
object(stdClass)#221 (2) {
["id"]=>string(1) "1"
["fname"]=>string(5) "Ahnaf"
}
}
[{"id":"1","fname":"Ahnaf"}]
【问题讨论】:
-
能否附上从服务器收到的
data变量的日志?因为似乎客户只是收到无效的响应。 -
查看我的编辑。客户端正在接收数据。
-
最后一个代码块(即服务器响应)是无效的 JSON,因此无法解析,客户端应该只收到提供的响应的最后一行。
-
你的意思是说 json_encode 输出错误!!!!!!我该如何修复 json_encode :o ...
-
抱歉,我不是 PHP 专家,您应该浏览 StackOverflow 以了解相关问题,但看起来不是 javascript 的问题。
标签: javascript php json ajax laravel