我从laravel函数返回这个数组:
success: function (data) {
console.log(data.length);
var priority =data.priority;
var status =data.status;
var type = data.type;
// $('#submenu').empty();
for(var i=0; i<data.length; i++){
$('#output').append("<tr><td>" + priority + "</td><td>" + status + "</td><td>" + type + "</td></tr>");
}
},
然而在我的ajax中,我这样抓住他们:
console.log(data);=>returns {"priority":"priority one","status":"status one","type":"type one"}
问题是三个优先级,状态和类型未定义,data.length 返回67而不是3 ,int x = -1 << 31;
System.out.print(Integer.toBinaryString(-1) + " -1\n");
System.out.print(Integer.toBinaryString(x) + " " + x + "\n");
// output
11111111111111111111111111111111 -1
10000000000000000000000000000000 -2147483648
如何解决此问题?
答案 0 :(得分:1)
您收到的data
是一个字符串。您需要使用json_decode()
或JSON.parse()
答案 1 :(得分:1)
data
变量包含一个字符串,因为您可能不会将content-type
标题发送为application/json
。
你可以像这样解码字符串:
....
success: function (data) {
console.log(data);
var json = JSON.parse(data);
console.log(json);
var priority = json.priority;
var status = json.status;
var type = json.type;
// $('#submenu').empty();
$('#output').append(
"<tr>" +
"<td>" + priority + "</td>" +
"<td>" + status + "</td>" +
"<td>" + type + "</td>" +
"</tr>"
);
},
....
或更好的方法是从控制器返回JSON响应:
....
class MyController {
....
public function sendReponse() {
$data = $this->getDataSomehow();
return response()->json($data);
}
....
}
....