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

Why php json response does not send back the data array to ajax jquery request?

本文关键字:ajax 请求 jquery 数组 数据 json php 响应 为什么      更新时间:2023-09-26

我已经向 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']
]);

并向客户显示结果,例如

$('#debug'(.html(response.debug(;

它适用于单个键值响应,显示我从客户端发送的正确值字段。其他明智的做法是,无论我是否将完整的data作为数组发送,客户端的调试区域中都不会显示任何内容。

return json_encode($data);不起作用。 因为它将 JSON 字符串返回到调用方法,而调用方法不是前端的 jQuery。不要将前端(html javascript,jQuery等(与后端(PHP(混淆,它们在不同的机器上运行。一个在客户端,另一个在服务器。

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

确保回显数据没有像@bansi所说的那样返回,如果您已经回显它,请使用 var_dump(json_encode($data)) 进行调试。如果json_encode()发现错误,它将返回False而不是预期的 json 数组。

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

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