2013-10-24 82 views
1

我通過服務器端(PHP)和HTML文件(腳本src = blabla ...在頭部,div id =「rated ...在身體中) 。使用jQuery + PHP的Ajax無法正常工作

功能「peticion」的作品,但功能,「喜歡」或觸發後「不喜歡」無關的工作,我不看到HTML的任何變化。

$(function(){ 


    function like(){ 
     var asinid = $('#rate').data('id'); 

     var rHtml = '<a href="#" id="rate" data-id="('+asinid+')" data-action="dislike">No te gusta</a>'; 


     $('#rated').html(rHtml); 
    } 
     function dislike(){ 
     var asinid = $('#rate').data('id'); 

     var rHtml = '<a href="#" id="rate" data-id="('+asinid+')" data-action="like">Te gusta</a>'; 


     $('#rated').html(rHtml); 
    } 


    function peticion(e){ 
     // Realizar la petición 
     var parametros = { 
      asinid: $('#rate').data('id') 
     }; 


     if ($('#rate').data('action')=='like'){ 
     var post = $.post("../../likes/addlike.php", parametros, like, 'json'); 
     } 
     else if($('#rate').data('action')=='dislike'){ 
     var post = $.post("../../likes/dellike.php", parametros, dislike, 'json'); 
     } 

    } 

    $('#rate').click(peticion); 
}); 

功能「 peticion「的作品,但在觸發功能之後,」like「或」dislike「功能無法正常工作,我在瀏覽器中看不到任何更改。

回答

0

嘗試,因爲你正在使用jQuery 1.10改變了一陣後:

var post = $.post("../../likes/addlike.php", parametros, 'json'); 

post.done(function(data) { 
    like(); 
    }); 

jquery post documentation

jqXHR.success(),jqXHR.error()和jqXHR.complete()回調方法在jQuery 1.5中引入的jQuery在jQuery 1.8中被棄用。要準備代碼以便最終刪除它們,請改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

此外,使用.on爲你動態地添加元素:

$(document).on('click', '#rate', function(){ 
    peticion(); 
}); 

jquery on documentation

+1

謝謝,現在的作品! – treska

0

獲取數據值E中的腳本將

$('#rate').attr('data-id'); 

使用ATTR方法來獲取任何用戶的任何屬性值的jQuery

+0

謝謝,我現在使用它。但這不是問題。服務器端工作正常,但我不顯示任何改變的HTML端(var rHtml = ...) – treska

0

這是因爲你的事件處理程序

$('#rate').click(peticion); 

替換HTML代碼後銷燬

$('#rated').html(rHtml); 

嘗試

$('#rate').live("click", peticion); 

或重複點擊()結合每個HTML()

$('#rated').html(rHtml); 
$('#rate').click(peticion); 
+0

不要再推薦使用'live'了。它被棄用的jquery 1.7和1.9中刪除這就是爲什麼它沒有效果,因爲1.10正在加載頁面http://api.jquery.com/live/ –