很抱歉,如果这是一个明显答案的问题,但我对Jquery的了解非常有限,我不知道如何调试它。
基本上在我的网站上我有一个排名脚本(请参阅此处在中间框中工作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});
});
});
另外......问题是否可能源于文件scripts.js中已经有$(document).ready(function(){
?
再次感谢,感谢所有帮助,你可以让我在这里彻底失去这个帮助!
干杯
答案 0 :(得分:2)
我想第一步是使用firebug或任何类似的框架,并在网络标签中查看您的获取请求是否已发送到服务器。< / p>
其次,我建议至少有一个成功的回调,如in the doc所示,以查看通话是否成功。
让我们知道它是怎么回事。
答案 1 :(得分:1)
正如其他人所说,你应该做一些调试。查看执行的内容和不执行的内容。在我看来,这条线是错误的,并且执行在那里停止:
ratingDiv.text(v + +ratingDiv.text());
一个+
是多余的。
另外:对于要求更改服务器上的内容的请求,您应该使用post
(而不是get
)。实际上这可能无关紧要,但有时会这样(当get
个请求被配置为缓存,因此不会再次发送,而post
请求则不会。)
答案 2 :(得分:0)
$.get('ajax.php',{action:'vote',vote:v,'id_frase':id_frase});
你正在进行ajax调用,但是当ajax完成时你永远不会提供任何成功的回调。你需要给它一个函数名(或匿名函数)来在ajax完成时执行。
请参阅documentation。