0

我不得不再次问这个,对不起。所以我正在运行这个 jQuery 来滑动切换我的 PHP 循环输出中的跨度。我有一些 PHP 会生成一些对数据库的调用,以获取每个项目的更详细信息。

我知道到目前为止我已经得到了它对 PHP 脚本的调用。我可以看到返回的数据包带有从 PHP 文件回显的 HTML。但我很难让 jQuery 将返回的数据插入到指定的范围中。

这是循环项目的简化版本:

<span class="searchitem">

 <span style="visibility:hidden;" class="name">some name</span>

 <span class="btn">Details</span>

 <span class="itemdetails" style="display: none;">
   //hidden area to populate with returned ajax html from php script 
 </span>

</span>


<span class="searchitem">

 <span style="visibility:hidden;" class="name">another name</span>

 <span class="btn">Details</span>

 <span class="itemdetails">
   <div>
     <p>
     this is the area i need the html to populate
     </p>
   </div>
</span>

</span>.................

这是我正在尝试运行的 jQuery。我知道一切都会成功。我无法从那里获取数据。

<script type="text/javascript">   
      var ajax_load = "<img src='images/loading.gif' style='width:50px;' alt='loading...' />"; 
      var loadUrl = "ajax/item_details.php";
      $(document).ready(function ()
              {
                    $('.searchitem').each(function () {

                    var itemname = $(this).find('.name').text();
                    var ename = encodeURI(itemname);
                    var requestUrl = loadUrl + ename;
                        $(this).find('.itemdetails').hide();
                        $(this).find('.btn').click(function ()
                        {
                            var returned = "";
                                $.ajax({
                                type: "GET",
                                url: loadUrl,
                                data: "name=" + ename,
                                dataType: "text",
                                error: function () { alert("error") },
                                success: function (data) { $(".ptavail").append(data); alert("successful") }
                                }); 
                    $(this).parent().find('.ptavail').html(ajax_load).slideToggle(1500).html(returned);
                        });
                    });
              });
</script>

正如您从代码中看到的那样,我试图让点击功能设置一切关闭。我知道 PHP 文件正在接收调用并返回数据,但我一直试图让 jQuery 用返回的数据填充 .itemdetails。

这有什么问题?我是否需要将 AJAX 放入一个单独的函数中以使其行为符合我的需要,或者我是否需要使其同步才能工作?我试图基本上替换 .itemdetails spans 之间的所有内容,首先是一个加载符号,然后是用 AJAX 返回的数据......因为现在我收到错误警报,所以 ajax 调用有问题我知道它确实请求正确,PHP 返回结果,但让 AJAX 读取它们被证明是有问题的。

我可以看到标题中的内容类型是文本,那么如何让 AJAX 正确调用呢?

4

1 回答 1

1

$(this).parent().find('.itemdetails').html(ajax_load).slideToggle(1500).html(data);

在 Ajax 请求的“成功”部分内。

success: function(data) {
  $(this).parent().find('.itemdetails').html(ajax_load).slideToggle(1500).html(data);
}

成功功能是说“当 Ajax 工作时,执行此操作”

于 2012-11-11T14:02:22.680 回答