javascript - jQuery - Ajax 不返回 json 响应

标签 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"

我的错误在哪里,为什么没有正确接收响应。我完全不明白...你能帮我吗?

提前致谢!

最佳答案

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

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

看起来像

    price: "$9.99"

不是有效的 json。

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

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

它将输出:

{"price":"$9.99"}

关于javascript - jQuery - Ajax 不返回 json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32144344/

相关文章:

javascript - 拦截React点击事件

javascript - 如何在 Javascript 中创建一个 div 并将其定位在 html 模板的中间

php - 如何修复第 500 行 vendor\laravel\framework\src\Illuminate\Foundation\helpers.php 中的 PHP Parse error : syntax error, unexpected '?'

php - 测验的数据库结构是什么样的?

javascript - 为 block 元素的宽度设置动画,因为它随 jQuery 的变化而变化?

jQuery 使用 .each 匹配元素并使用 setTimeout 延迟其处理?

javascript - React.js : Find a string in a string and make it clickable if found

javascript在视口(viewport)中找到最近的元素并滚动到它

php - 当包含空格或特定字符时,Javascript 参数不能很好地执行

javascript - 如何计算数字和逗号中有空格的表中的值