无法使用带有ajax响应的jquery.html()

时间:2015-03-02 15:27:57

标签: php jquery ajax

尝试使用<li>

从ajax响应中选择<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很新,任何帮助都会非常感激。提前谢谢。

2 个答案:

答案 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());。未经测试但可能会让您走上正轨。