1

.post在表中的每个元素上运行 jQuery 时遇到问题。以下是我的代码

HTML

<table>
    <tr>
        <td class="load_img"></td>
        <td class="load_img"></td>
        <td class="load_img"></td>
        <td class="load_img"></td>
        <td class="load_img"></td>
        <td class="load_img"></td>
        <td class="load_img"></td>
        <td class="load_img"></td>
    </tr>
</table>

javascript

   $(document).ready(function(){
    $("td.load_ads").html("<img src='/classified_ads4free/images/icons/ajax-loader.gif'>");
     $("td.load_ads").each(function(){
       var loading=$(this);

       $.post('/classified_ads4free/self_coded_helpers/jpost_get_ads.php',function(data)
       {
          loading.html(data);
       });
     });
    });

.POST PHP 脚本

 <?php
   $index=rand(0,10);
   echo $index;
 ?>

所以我在这里要做的是让<td>我的表中的每个都加载一个随机数,但我现在的问题是所有的都<td>加载了相同的随机数。而不是每个都有一个 0-10 的随机数。

(这只是为了说明,我知道它可以使用 jquery 生成一个随机数,但我需要这样做的目的.post是因为我将运行查询以获取这些表元素中的加载图像。)

4

4 回答 4

0

您是否尝试过这种方式:

   $(document).ready(function(){
    $("td.load_ads").html("<img src='/classified_ads4free/images/icons/ajax-loader.gif'>");
     $.post('/classified_ads4free/self_coded_helpers/jpost_get_ads.php',function(data){
       $.each($("td.load_ads"), function(){
         var loading=$(this);   
         loading.html(data);
       });
     });
  });

I think you should iterate in the success function.

于 2013-01-02T08:45:27.530 回答
0

谢谢大家的帮助。解决了。我所做的是创建一个人工变量索引。然后每次我使用新循环启动 .post 时都会增加索引。不知道为什么,但它以我希望它运行的方式工作。我的新javascript代码如下,以防有人需要。

   $(document).ready(function(){
    $("td.load_ads").each(function(){
        var loading=$(this);
        var index=0;
        $(this).html("<img src='/classified_ads4free/images/icons/ajax-loader.gif'>");
        $.post('/classified_ads4free/self_coded_helpers/jpost_get_ads.php',{index:index},function(data){
            loading.html(data);
            index=index+1;
        });
    });
   }); 
于 2013-01-02T08:52:07.847 回答
0

应该是缓存的问题。
由于您的请求始终相同,因此浏览器只发送一次请求。
解决方案是:

1/ 在您的 php 脚本中添加一个 html 标头以不缓存答案:

header("Cache-Control: no-cache, must-revalidate");  
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

2/ 在请求中添加一个随机参数

于 2013-01-02T08:23:25.580 回答
0

这似乎是一个缓存问题。

最简单的解决方法是向 url 添加一个随机数。

var d = new Date();

$.post( '/classified_ads4free/self_coded_helpers/jpost_get_ads.php'
        + '?_=' + d.getTime()
        + '&_=' + Math.random(),
        function( data ) { /* stuff */ }
);
于 2013-01-02T08:27:43.603 回答