3

我正在尝试从 PHP 脚本返回一个 json 编码的字符串。

$.post("order.php", { product: product_id, coupon: coupon },
function(data) {
    $("#price").html("$" + data.price);
    $("#discount").html("$" + data.discount);
    $("#total").html("$" + data.total);
});

我尝试在回调中使用警报函数来查看 PHP 的返回值:

{"price":249,"discount":"0.00","total":249}

但#price 和其余元素的值是“$undefined”。

请帮忙。

4

5 回答 5

5

看来您只需使用以下命令将 JSON 数据解析为对象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);
});
于 2012-10-10T09:59:13.903 回答
3

我知道这是旧的,但这是为了帮助所有可能有这个问题的人

您必须在方法调用中添加一个额外的参数 ( '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');
于 2015-11-29T14:32:30.550 回答
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);
});
于 2012-10-10T10:19:04.150 回答
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 个,就是这样,很简单:)

于 2014-07-01T13:41:53.407 回答
-1

您应该使用 $.getJSON 而不是 $.post 来获取 json 字符串。

不要忘记将您的内容标头设置为 JSON

于 2012-10-10T09:58:36.037 回答