我有以下php对象(??? new to this)。它通过AJAX从我的页面发送,并作为JSON发送。我正在解码它并尝试回显结果,但我得到的只是NULL。在Firebug中,POST寡妇的所有内容都显示正常,但在RESPONSE中没有任何内容(我认为这是我应该看的地方?)
header('Content-type: application/json');
$res = json_decode($_POST['apiresponse'], true);
echo $res;
如何将其转换为PHP变量(字符串),我可以返回到我原来的PHP页面,
如何发送/调用变量?**
谢谢!
答案 0 :(得分:1)
情况并非如此:(跳过!) 你如何将变量从javascript传递给php? 我真的只是在这里猜测,但听起来很像你有什么东西沿着
$.ajax( "/my-api-thing.php", { data: { "apiresponse": "some_value", "more":"things" } }).success(...);
如果是这种情况,那么你只是期望json作为php脚本的结果,但你实际上并没有发送一个json对象作为请求,而是正常的http参数。
然后你会在php中写这样的东西:
$someVariable = $_POST["apiresponse"]
(顺便说一句:这将是“正常”的方式,将json发送到服务器并不是那么常见)
更新了猜测
我已经验证了您使用此文件发布的json:
<form type="textarea" method="post">
<textarea name="apiresult" style="width: 400px;height:200px;">
{"id":"-------","name":"Aaron ----------","first_name":"Aaron","last_name":"----","link":"http://www.facebook.com/-------","username":"-----","birthday":"05/06/1949","location":{"id":"-----","name":"Los Angeles, California"},"gender":"male","email":"------","timezone":-8,"locale":"en_US","verified":true,"updated_time":"2011-10-22T18:40:02+0000"}
</textarea>
<br>
<input type="submit">
</form>
<br>
<?php
if( isset( $_POST["apiresult"] ) ){
echo "<pre>";
echo $apiresult;
echo "\n----\n";
print_r( json_decode( $_POST["apiresult"] ) );
echo "</pre>";
}
?>
所以json_decode似乎根本不是问题。
其他一些猜测:
要查明问题,您可以在echo $_POST["apiresponse"];
之前运行json_decode
以查看输出是否与输出不同?
答案 1 :(得分:0)
来自PHP文档:
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
"NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit."
检查“$ _POST ['apiresponse']”的深度。