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这个,因为我觉得完全失去了!
干杯
正如其他人所说,你应该做一些调试。看看执行什么,什么不执行。在我看来,这条线是错误的,将停止执行有:
ratingDiv.text(v + +ratingDiv.text());
一个+
是多余的。
也包括:请求更改服务器上的东西,你应该使用post
(不get
)。这实际上可能并不重要,但有时它确实(当get
请求被配置为被缓存并因此不再被发送,而post
请求则不被)。
嘿汤姆。你的回答揭示了这个问题,因为这个+可能不会那么多,因为我在网站的主页上已经完成了scrtipt并运行完美。正如你所说的,执行停止在ratingDiv.text(v ++ ratingDiv.text());这可能是由脚本引起的,现在不是ratingDiv指定的。我认为ratingDiv被定义为ratingDiv = li.find('。rating2'),但事情是有10个ratingDiv在该页面上......是否有任何方法来区分它们?就像每个例子它是如何完成id_frase的定义的... –
看起来'ratingDiv'指的是你所拥有的第三个'span'(它是由“rating2”类找到的),它是“最接近的li看起来似乎不止一个,也许在其他地方有更多,但在最接近的里面只有一个,如果还有更多,你可以给他们不同的id来区分它们)。我再看一遍,额外的'+'确实不是多余的。执行到底在哪里停止?那里的变量的值是什么? – Tom
我并不真正知道执行何时停止Tom。我知道ajax.php没有收到请求(所以问题肯定在jQuery部分)。我也必须说我在这个问题上发布的HTML是在一个循环内,如果你看到http://www.nfrases.com/modelo2.php?tag_nome=vida的来源,你会看到我在这里发布的html重复10次在该页面内。 –
我想第一步是使用firebug或任何类似的框架之一,并在网络选项卡,看看你的得到请求被发送到服务器或没有。
其次,我会建议至少有一个成功回调,如in the doc所示,以查看通话是否成功。
让我们知道如何去。
我现在有萤火虫,网络标签没有显示任何东西,当我点击其他投票。也放一个回调函数来弹出一个警报,也没有什么happnes! –
$.get('ajax.php',{action:'vote',vote:v,'id_frase':id_frase});
你调用Ajax,但你永远不提供任何成功的回调当AJAX完成的事情。您需要给它一个函数名称(或匿名函数),以在ajax完成时执行。
请参阅documentation。
没有结果。我几乎可以肯定,问题不是来自ajax.php,因为我已经在www.nfrases.com上工作了......这个问题肯定与modelo.php中的元素名称有关?tag_nome = vida和方式他们拿起了购买jQuery。 –
您可以根据需要获取尽可能多的$(document).ready()定义。 –