这是我的 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/