为什么 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)
或 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
命令不会打印数据,因此您在响应中没有获得任何内容。
- ajax请求的顺序总是不同的
- 从ajax请求中获取javascript对象
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- JavaScript代码未正确检查ajax请求
- "日期“;AJAX请求返回的类型值未定义
- 在等待ajax请求时显示微调器并禁用页面
- 跨域ajax请求
- Ajax请求返回空的数据字符串,但首先得到了正确的数据
- Javascript-如何让脚本与Ajax请求的数据一起运行
- ajax请求成功,但可以'我看不到我的数据
- 如何将给定的curl命令复制为jquery ajax请求
- 为什么我能够从javascript控制台发送跨域ajax请求
- 一台特定计算机的Ajax请求数据未定义/失败
- 获取ajax请求的请求头
- 原型Ajax请求参数为嵌套json
- 可以't从AJAX请求中筛选数据
- jQuery Mobile Collapse上的AJAX请求
- 暂停函数执行流程,直到ajax请求完成