这是我的JavaScript:
$.ajax({
url: './checkcolors.php',
type: 'post',
data: {
url: '<?php echo $LINK;?>',
SizeId: SelectedSizeID
},
dataType: 'json',
success: function (data) {
$('.ColorImagesNOColor').fadeIn();
$('#LoadingImage').hide();
data.forEach(function(id){
$('#' + data["colorids"]).hide();
});
}
});
这是checkcolors.php代码:
<?PHP
$url = $_POST['url'];
$SizeId = $_POST['SizeId'];
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 = [];
foreach ($item->SizeVariants as $size) {
$SizeNames[] = $size->SizeName;
}
if (in_array($SizeId, $SizeNames)) {
echo json_encode(array('colorids' => $ColVarId));
}
}
}
?>
结果必须返回许多ID,这些ID对应于我必须隐藏的HTML <div></div>
元素的ID。不知怎的,我没有得到checkcolors.php的正确答复。没有浏览器控制台错误。
你能帮我解决这个问题吗?
提前致谢!
答案 0 :(得分:0)
而不是:
if (in_array($SizeId, $SizeNames)) {
echo json_encode(array('colorids' => $ColVarId));
}
使用此:
if (in_array($SizeId, $SizeNames)) {
$result[] = $ColVarId;
}
在foreach之前:
$result = array();
在foreach之后:
echo json_encode($result);
现在你已经有一个看起来像JS成功的数组:
["1", "2", "3"] ...
您的脚本应该是:
data.forEach(function(id){
console.log(id); // will log: 1
});
答案 1 :(得分:0)