Jquery和Ajax不能正常工作

Jquery和Ajax不能正常工作

问题描述:

对不起,如果这是一个明显的答案,但我对Jquery的知识是非常有限的,我不知道如何调试。Jquery和Ajax不能正常工作

Basicaly在我的网站上我有一个排名脚本(在这里看到的工作nfrases.com在中间的框)读取,如果用户点击或向下,然后jQuery脚本选择投票,发送到ajax.php执行mySQL查询并刷新$ rating值。我跟着一个教程,所以一切都很顺利,以实现这一目标。

现在我试图在http://www.nfrases.com/modelo2.php?tag_nome=vida重现它,但没有任何工作......已经尝试了一百万变化(不知道我在做什么),没有任何工作。 jquery脚本不在scripts.js中,因为它更容易删除,但是我会在这里粘贴有问题的区域,这样我可以更好地帮助你!

在此先感谢!

HTML部分:

  <ul id="caixacontainer2">  
       <li id="m<?php echo $id_frase ?>"> 
        <div class="vote2 <?php verification that returns "active" or "inactive" ?>"> 
         <span class="up"></span> 
         <span class="down"></span> 
         <span class="rating2"><?php echo $rating ?></span>       
        </div> 
       </li> 
      </ul> 

jQuery的一部分:

$(document).ready(function(){ 
var ul = $('ul.caixacontainer2'); 

$('div.vote2 span').live('click',function(){ 

    var elem  = $(this), 
     parent  = elem.parent(), 
     li   = elem.closest('li'), 
     ratingDiv = li.find('.rating2'), 
     id_frase = li.attr('id').replace('m',''), 
     v   = 1; 

    if(parent.hasClass('inactive')){ return false; } 
    parent.removeClass('active').addClass('inactive'); 
    if(elem.hasClass('down')){ v = -1; } 
    ratingDiv.text(v + +ratingDiv.text()); 
    var arr = $.makeArray(ul.find('li')).sort(function(l,r){ return +$('.rating2',r).text() - +$('.rating2',l).text(); }); 
    ul.html(arr); 
    $.get('ajax.php',{action:'vote',vote:v,'id_frase':id_frase}); 
    }); 
}); 

而且...是有可能的问题得出自已有$(document).ready(function(){文件scripts.js中里面?

再次感谢,感谢所有帮助,你可以给我debbuging这个,因为我觉得完全失去了!

干杯

+0

您可以根据需要获取尽可能多的$(document).ready()定义。 –

正如其他人所说,你应该做一些调试。看看执行什么,什么不执行。在我看来,这条线是错误的,将停止执行有:

ratingDiv.text(v + +ratingDiv.text()); 

一个+是多余的。

也包括:请求更改服务器上的东西,你应该使用post(不get)。这实际上可能并不重要,但有时它确实(当get请求被配置为被缓存并因此不再被发送,而post请求则不被)。

+0

嘿汤姆。你的回答揭示了这个问题,因为这个+可能不会那么多,因为我在网站的主页上已经完成了scrtipt并运行完美。正如你所说的,执行停止在ratingDiv.text(v ++ ratingDiv.text());这可能是由脚本引起的,现在不是ratingDiv指定的。我认为ratingDiv被定义为ratingDiv = li.find('。rating2'),但事情是有10个ratingDiv在该页面上......是否有任何方法来区分它们?就像每个例子它是如何完成id_frase的定义的... –

+0

看起来'ratingDiv'指的是你所拥有的第三个'span'(它是由“rating2”类找到的),它是“最接近的li看起来似乎不止一个,也许在其他地方有更多,但在最接近的里面只有一个,如果还有更多,你可以给他们不同的id来区分它们)。我再看一遍,额外的'+'确实不是多余的。执行到底在哪里停止?那里的变量的值是什么? – Tom

+0

我并不真正知道执行何时停止Tom。我知道ajax.php没有收到请求(所以问题肯定在jQuery部分)。我也必须说我在这个问题上发布的HTML是在一个循环内,如果你看到http://www.nfrases.com/modelo2.php?tag_nome=vida的来源,你会看到我在这里发布的html重复10次在该页面内。 –

我想第一步是使用firebug或任何类似的框架之一,并在网络选项卡,看看你的得到请求被发送到服务器或没有。

其次,我会建议至少有一个成功回调,如in the doc所示,以查看通话是否成功。

让我们知道如何去。

+0

我现在有萤火虫,网络标签没有显示任何东西,当我点击其他投票。也放一个回调函数来弹出一个警报,也没有什么happnes! –

$.get('ajax.php',{action:'vote',vote:v,'id_frase':id_frase}); 

你调用Ajax,但你永远不提供任何成功的回调当AJAX完成的事情。您需要给它一个函数名称(或匿名函数),以在ajax完成时执行。

请参阅documentation

+0

没有结果。我几乎可以肯定,问题不是来自ajax.php,因为我已经在www.nfrases.com上工作了......这个问题肯定与modelo.php中的元素名称有关?tag_nome = vida和方式他们拿起了购买jQuery。 –