我正在尝试在Laravel POS应用程序中获取客户详细信息。我通过AJAX发送客户单元号,以便从控制器发送和返回详细信息。我什么时候尝试将JSON.parse应用于来自服务器的返回数据:
未捕获的SyntaxError:位于0的JSON中的意外标记
我无法在代码中发现错误。我从服务器完全相同的方式搜索产品,工作正常。以下是我的代码示例:
我的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);
这给出了consol中的输出:
array(1) {
[0]=>
object(stdClass)#221 (2) {
["id"]=>string(1) "1"
["fname"]=>string(5) "Ahnaf"
}
}
[{"id":"1","fname":"Ahnaf"}]
答案 0 :(得分:0)
jquery docs for the ajax
function表示dataType
参数拼写为大写T
。
你有这个:
datatype:'json'
尝试将其更改为:
dataType:'json'
看看是否有帮助。
答案 1 :(得分:0)
您可以尝试使用first()
代替get()
。
这应该解决这个问题。
答案 2 :(得分:0)
您应该使用echo
而不是return
来进行ajax响应
我的控制器功能:
echo json_encode($data);
此外,dataType必须为
dataType: "json" // but remove this line because your already have JSON.parse(data);