2011-11-02 118 views
0

對不起,如果這是一個明顯的答案,但我對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()定義。 –

回答

1

正如其他人所說,你應該做一些調試。看看執行什麼,什麼不執行。在我看來,這條線是錯誤的,將停止執行有:

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次在該頁面內。 –

2

我想第一步是使用firebug或任何類似的框架之一,並在網絡選項卡,看看你的得到請求被髮送到服務器或沒有。

其次,我會建議至少有一個成功回調,如in the doc所示,以查看通話是否成功。

讓我們知道如何去。

+0

我現在有螢火蟲,網絡標籤沒有顯示任何東西,當我點擊其他投票。也放一個回調函數來彈出一個警報,也沒有什麼happnes! –

0
$.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。 –