我正在尝试从PHP脚本返回一个json编码的字符串。
$.post("order.php", { product: product_id, coupon: coupon },
function(data) {
$("#price").html("$" + data.price);
$("#discount").html("$" + data.discount);
$("#total").html("$" + data.total);
});
我尝试在回调中使用alert函数来查看PHP的返回值:
{"price":249,"discount":"0.00","total":249}
但#price和rest元素的值是“$ undefined”。
请帮忙。
答案 0 :(得分:3)
您似乎只需使用parseJSON()
将
$.post("order.php", { product: product_id, coupon: coupon },
function(data) {
data = $.parseJSON( data );
$("#price").html("$" + data.price);
$("#discount").html("$" + data.discount);
$("#total").html("$" + data.total);
});
答案 1 :(得分:1)
我知道这是旧的,但这是为了帮助所有可能遇到此问题的人
您必须在'json'
方法调用中添加一个额外参数($.post
),如下所示:
$.post(url,data_in,function(data_out){ your_code here },'json');
对于那些不知道的人,你的PHP
必须在所有处理结束时输出这样的内容:
die(json_encode(array("RESPONSE"=>"OK","MYMESSAGE"=>"THIS IS SUCCESSFULL")));
还有HTML
输出的替代方案,而不是JSON
:
$.post(url,data_in,function(data_out){ your_code here },'html');
然后您的回复PHP
必须输出:
echo "<div id=\"RESPONSE\">OK</div>";
echo "<div id=\"MYMESSAGE\">THIS IS SUCCESSFULL</div>";
die();
所以要回答原始问题,code
必须是这样的:
$.post("order.php", { product: product_id, coupon: coupon }, function(data) {
$("#price").html("$" + data.price);
$("#discount").html("$" + data.discount);
$("#total").html("$" + data.total);
},'json');
答案 2 :(得分:0)
您从服务器获取字符串,您应将其解析为json
使用
$.post("order.php", { product: product_id, coupon: coupon },
function(data) {
data = jQuery.parseJSON( data );
$("#price").html("$" + data.price);
$("#discount").html("$" + data.discount);
$("#total").html("$" + data.total);
});
答案 3 :(得分:0)
你可以简单地使用下面的脚本删除$ array并将其替换为你想要的 回复:
前两个标头阻止浏览器缓存响应(IE和GET请求出现问题) 第三个为JSON设置正确的MIME类型。
假设这是order.php文件的内容:
开始脚本
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
$array = array("price"=>10,"product_id"=>1);
echo json_encode($array);
结束脚本
和:
$.post("order.php",function(data){
alert(data.price);
});
我们将得到10分
就这么简单:)
答案 4 :(得分:-1)
你应该使用$ .getJSON而不是$ .post来获取json字符串。
不要忘记将内容标题设置为JSON