将JSON传递给PHP
Passing JSON to PHP
这是我在javascript中的函数:
function callRemoteService(requestId, sObjectId, bObjectId) {
$.ajax({
url: "../../../serviceRemoteEngine.php",
dataType: "json",
contentType: "application/json",
type: "POST",
timeout: 1000,
data: JSON.stringify({"requestId":requestId,"SOobjectId":sObjectId,"SBobjectId":bObjectId}),
success: function(remoteResponse){
alert(remoteResponse.msg);
}
});
}
这是serviceRemoteEngine.php
echo json_encode(array("msg" => $_POST["SOobjectId"]));
函数通过以下参数调用:
callRemoteService('remove', 15, 0)
问题是,在警报消息中显示的不是15
,而是null
。
但是,当我将PHP文件改为:
echo json_encode(array("msg" => "message"));
"message"文本显示为js alert.
为什么?
发送ajax请求时不需要调用JSON.stringify()
,因为$.ajax()
函数期望参数的关联数组,而不是字符串。
function callRemoteService(requestId, sObjectId, bObjectId) {
$.ajax({
url: "../../../serviceRemoteEngine.php",
dataType: "json",
contentType: "application/json",
type: "POST",
timeout: 1000,
data: {"requestId":requestId,"SOobjectId":sObjectId,"SBobjectId":bObjectId},
success: function(remoteResponse){
alert(remoteResponse.msg);
}
});
}
PHP期望post/get请求具有key=value
对。你发送的是一个空字符串,所以就是value
。由于没有键,PHP不能(也不会)将任何东西放入$_POST中,因为没有键来附加value
。
试
data: {foo: JSON.stringify(...)}
和
echo $_POST['foo']
。
你的PHP的JSON是这样的:
echo json_encode(array("msg" => "message"));
但是你应该看看添加适当的JSON头是否有助于澄清问题。这样的:
$json_data = json_encode(array("msg" => "message"));
header('X-JSON: (' . $json_data . ')');
header('Content-type: application/x-json');
echo $json_data;
另外,再次阅读您的问题,您似乎想立即获得$_POST["SOobjectId"]
&然后通过JSON发送回来?你确定$_POST
包含任何东西吗?在PHP文件中,在执行其他操作之前,执行以下操作:
echo '<pre>';
print_r($_POST);
echo '</pre>';
或者为$_REQUEST
执行以下操作以查看数据是否传输:
echo '<pre>';
print_r($_REQUEST);
echo '</pre>';
也许您需要在PHP文件中这样做。通过file_get_contents('php://input')
获取原始$_POST
数据,然后解码并以这种方式处理。我所有的修改——包括这个想法——都在下面:
$json_decoded_array = json_decode(file_get_contents('php://input'), true);
$json_data = json_encode(array("msg" => $json_decoded_array['SOobjectId']));
header('X-JSON: (' . $json_data . ')');
header('Content-type: application/x-json');
echo $json_data;
相关文章:
- 如何使用jquery返回php-json数组对象
- 无法读取js中的php JSON编码数据
- PHP JSON编码输出与Javascript Ajax不兼容
- 如何在php JSON编码结果中包含谷歌分析
- jQuery在没有数据库的情况下从php-json自动完成
- AJAX PHP JSON编码未返回所有结果
- 将编码的 PHP JSON 传递给 JavaScript
- PHP json 格式编码
- 如何创建正确的 PHP JSON 响应
- 如何从 PHP JSON 编码制作这个 JavaScript 对象
- 钛 - PHP + JSON 解析错误
- php json - 仅从数组中获取第一个元素
- 创建一个 PHP json 提要并成功将其链接到 javascript
- DatePicker php json 不起作用
- 在 Javascript 中解析 PHP/JSON 数据
- 将 php JSON 对象转换为数组
- PHP JSON 不能回显值,总是返回一个数组
- 为什么 php json 响应不会将数据数组发送回 ajax jquery 请求
- PHP JSON Returns u0000
- 在 JavaScript 中使用 php json 结果