为什么php json响应不会将数据数组发送回ajax jquery请求?

时间:2016-02-14 14:39:17

标签: javascript php jquery json ajax

我已经向php服务器发出了ajax请求,我从表单请求发送数据,我会从服务器返回相同的数据,只是为了测试客户端和客户端之间抛出的相同数据的请求和响应服务器

$.ajax({
    method: "POST",
    url: "addRaces",
    dataType: "json",
    data : sending_data,
    success : ...
})

sending_data是一个类似{field_form_name : value}

的数组

服务器使用以下代码响应请求:

$data = [];
foreach ($request->Input() as $key => $value) {
    $data[$key] = $value;
}

return json_encode($data);

相同的数据应该返回给客户端,但alert(response)或jquery显示调试数据如 $('#debug').html(response);

没有任何反应

当我尝试推送服务器答案时出现奇怪的事情

return json_encode([
  'debug' => $data['name']
]);

并向客户显示结果

$('#调试')HTML(response.debug);

它正在处理单个键值响应,显示我从客户端发送的正确值字段。 另外明智的是,我是否将完整的data作为数组发送,客户端的调试区域中没有显示任何内容。

3 个答案:

答案 0 :(得分:0)

return json_encode($data);不会工作。因为它将json字符串返回给前端不是你的jQuery的调用方法。不要混淆前端(html javascript,jQuery等等)与后端(PHP),其中两个在不同的机器上运行。一个在客户端,另一个在您的服务器上。

您应该使用echo json_encode($data);这将输出json字符串,您的Web服务器会将其发送到前端。

答案 1 :(得分:0)

确保您回复未返回的数据,如@bansi所说,如果您已回复它,则使用var_dump(json_encode($data))进行调试。如果发现json_encode()错误,则会返回False而不是预期的json数组。

答案 2 :(得分:0)

您应该使用开发人员工具进行调试,而不是使用代码$('#debug').html(response.debug);。开发人员工具的“网络”选项卡对于调试HTTP请求非常有用,它将显示请求的响应标头和正文。

在您的情况下,只需将return改为echo,如@bansi's answerreturn命令不会打印数据,因此您没有在响应中获得任何内容。