jQuery - Ajax没有返回json响应

时间:2015-08-21 15:39:54

标签: javascript php jquery ajax json

这是我的JavaScript:

                    $.ajax({
                        url: 'CheckColorPrice.php',
                        type: 'POST',
                        data: {
                            url: '<?php echo $LINK;?>',
                            ColorId: ColorNumber
                        },
                        dataType: 'json',
                        success: function (data) {
                            $('#LoadingImage').hide();
                                $("#PRICE").text("£ " + data["price"]);                             
                        }
                    });

这是CheckColorPrice.php:

<?PHP
$url = $_POST['url'];
$ColorId = $_POST['ColorId'];       
if(isset($_POST['url']))
{   
    libxml_use_internal_errors(true); 
    $doc = new DOMDocument();
    $doc->loadHTMLFile($url);

    $xpath = new DOMXpath($doc);

    $DataVariants = $xpath->query('//span[@class="ImgButWrap"]/@data-variants')->item(0)->nodeValue;

    $jsonStart = strpos($DataVariants, '[');
    $jsonEnd = strrpos($DataVariants, ']');

    $collections = json_decode(substr($DataVariants, $jsonStart, $jsonEnd - $jsonStart + 1));   

    foreach ($collections as $item) {
        $ColVarId = $item->ColVarId;

        $SizeNames = [];
        $SellPrice = [];
        foreach ($item->SizeVariants as $size) {
            $SizeNames[] = $size->SizeName;
            $SellPrice[0] = $size->ProdSizePrices->SellPrice;
        }
        $names = implode(',', $SizeNames);
        $price = implode('', $SellPrice);

    if($ColVarId == $ColorId){
                $healthy2 = array('£',' ','Â');
                $yummy2   = array('','','');
                $price = str_replace($healthy2, $yummy2, $price);
                $PRICE = $price;
            echo "price: ",  json_encode($PRICE), "\n";

    }
}

}   

?>

CheckColorPrice.php的结果如下所示:

price: "37.99"

我的错误在哪里,为什么没有正确收到回复。我根本得不到它......你能帮助我吗?

提前致谢!

3 个答案:

答案 0 :(得分:3)

你没有回json。您正在返回包含一些json的纯文本:

        echo "price: ",  json_encode($PRICE), "\n";
             ^^^^^^^^^^

看起来像

    price: "$9.99"

NOT 有效的json。

您需要为JS代码返回一个数组才能工作:

echo json_encode(array('price' => $PRICE));

将输出:

{"price":"$9.99"}

答案 1 :(得分:1)

将以下标题添加到您的脚本中:

header('Content-type:application / json'); header(“Content-Disposition:inline; filename = ajax.json”);

同时更改行

echo "price: ",  json_encode($PRICE), "\n";

echo json_encode(array('price'=>$PRICE));

希望有所帮助

答案 2 :(得分:0)

首先,在你的ajax请求中,添加以下参数:

dataType : 'json'

然后,你的回答不是正确的json。 你可以退货:

echo json_encode(array("price"=>$PRICE));