尝试使用<li>
<ul>
列表中的jQuery.html();
时遇到问题
这是我的AJAX请求:
if (searchid != '') {
$.ajax({
type: "POST",
url: "/service/search.php",
data: dataString,
cache: false
}).done(function (html) {
$("#result").html(html).show();
var images = $("#result").find(".dbRows.sixth").html();
console.debug(images);
})
.fail(function (jqXHR, textStatus) {
$("#explainMessage").html('Unable to check at the moment. Please retry later').show();
})
}
return false;
在php中我有这段代码:
if ( mysqli_num_rows($result)==0)
{
$display = '<div id="explainMessage" class="explainMessage">Sorry, this was not found.</div>';
echo $display;
} else {
$counter = 0;
while ($row = $result->fetch_assoc()) {
++$counter;
$image_filename = $row['image_filename'];
$imageFolder = $_SERVER['DOCUMENT_ROOT'] . '/service/img/';
$imageList = scandir($imageFolder, 1);
$imageLink = '/service/img/' . $image_filename;
$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $image_filename);
$pattern = '/^(' . quotemeta($withoutExt) . ').*$/';
$display = '<div class="dbRows sixth" style="display:none"><ul>';
foreach ($imageList as $image) {
if (preg_match($pattern, $image)) {
if (in_array($image, $imageList)) {
$display .= '<li><img src="' . $imageLink . '" /></li>';
}
}
};
$display .= '</ul></div>';
echo $display;
问题在于,当我尝试使用AJAX.done();
功能时,在我的控制台中我只有<ul></ul>
而没有图像列表。我的问题是,为什么我无法选择<ul>
标签内的代码,即使图像列表实际上在代码中?我对PHP很新,任何帮助都会非常感激。提前谢谢。
答案 0 :(得分:1)
你做错了。在我要求您回复HTML之前我怀疑,你有空白`'。
$("#result").find(".dbRows.sixth").html()
将仅为第一个匹配的元素打印html。
如果你想获取所有匹配元素的html,试试这个:
$("#result").find(".dbRows.sixth").each(function(){
console.log($(this).html());
});
答案 1 :(得分:0)
从快速看,我可以看到一些问题。在您的php中,将第一行代码从<div class="dbRows sixth" style="display:none"><ul>';
更改为$display = '<div class="dbRows sixth" style="display:none"><ul>';
我可能会将此更改为:var images = $("#result").find(".dbRows.sixth").html();
:var images = $("#result > .dbRows.sixth");
。
然后添加images.show();
和console.log(images.html());
。未经测试但可能会让您走上正轨。