从服务器使用jQuery POST函数返回JSON数据

时间:2012-10-10 09:55:10

标签: jquery ajax json post get

我正在尝试从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”。

请帮忙。

5 个答案:

答案 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