这是我的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"
我的错误在哪里,为什么没有正确收到回复。我根本得不到它......你能帮助我吗?
提前致谢!
答案 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));