Jquery和Ajax无法正常工作

时间:2011-11-02 16:26:24

标签: php jquery html ajax

很抱歉,如果这是一个明显答案的问题,但我对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(){

再次感谢,感谢所有帮助,你可以让我在这里彻底失去这个帮助!

干杯

3 个答案:

答案 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