我已经向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
作为数组发送,客户端的调试区域中没有显示任何内容。
答案 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 answer。 return
命令不会打印数据,因此您没有在响应中获得任何内容。