繁体   English   中英

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

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

我向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)或显示调试数据(例如$('#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请求非常有用,它将显示响应标头和请求主体。

在你的情况,只是改变returnecho@半丝的答案 return命令不会打印数据,因此您在响应中什么也没得到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM