2010-10-01 91 views
0

我試圖在提交時從服務器加載簡單的成功或失敗消息。我在Ajax調用中取得了成功。然而,$('#some_div')。html(數據)正在將整個原始頁面返回給它。有什麼我失蹤?jquery ajax重新加載整個頁面的html

$(document).ready(function() { 
     $('a.favorite').click(function() { 
      var song_id = $(this).attr("id"); 
      $.ajax({ 
       url: 'ajax_favorite.php?song_id=' + song_id, 
       success: function(data, textStatus, req) { 
        $('#add_to_favorite_'+song_id).html(data); 
       }, 
       error: function(req) { // req = XMLHttpRequest object 
        alert("could not reach the server"); 
       } 
      }); 
      return false; 
     }); 
    }); 

更新:在ajax_favorite.php代碼song_id = 745頁

<?php 
echo "blah blah"; 
?> 
+0

我不明白你的問題,是它的數據得到另一個頁面的完整的源代碼? – frisco 2010-10-01 12:38:44

+0

如果你顯示你的php頁面返回,它會有所幫助。 – ryanulit 2010-10-01 12:39:19

+0

個人而言,我會使用特定於Ajax的URL,它只處理並返回您需要的相關部分。假設你的腳本是'path_to_script/ajax_favorite.php',Ajax定位到'path_to_script/ajax/ajax_favorite.php'。但我有點懶惰,所以...... – 2010-10-01 12:52:36

回答

0

所有的評論幫助我尋找這個問題的答案。事實證明,我正在使用.htaccess並通過GET字符串來回傳遞信息到服務器。這導致了jQuery代碼中路徑的各種問題。我自從在我自己的後端代碼中解釋了這一點。對於正在查看此問題的其他人。如果你使用jQuery.get()。確保你的路徑是正確的,並且如果與.htaccess欺騙結合使用的話。

感謝所有您的幫助

0

Ajax調用成功,數據變量應該有任何你從服務器頁面返回後? (ajax_favoriter.php)。因此,您可能需要檢查它從該頁面返回的內容。您可以直接在瀏覽器中通過ajax_favorite.php?song_id = 3頁面進行檢查(在瀏覽器中輸入此URL)。現在在瀏覽器中看到的內容將是你將在div中看到的HTML標記,當你使用html()方法加載時,

那麼我很困惑「整個原始頁面」。你的意思是你正在調用的頁面?

+0

我正在發起調用的頁面正在被重新渲染並放入數據變量中。我想知道爲什麼「blah blah」沒有被退回。 – 2010-10-01 14:26:31

+0

你確定你的初始頁面(你從哪裏進行調用)與ajax服務器頁面(ajax_favorite.php)不同嗎? – Shyju 2010-10-01 21:52:42

+0

是的,調用的頁面是index.php – 2010-10-01 22:07:04

0

如果我理解正確,你說的HTML頁面是在你的'數據'中返回?

將dataType傳遞給您的請求(http://api.jquery.com/jQuery.ajax/),例如json,並確保您的ajax_favorite.php?song_id = page返回json格式。

否則返回整個html。

+0

我添加dataType:'html',並且仍然收到來自原始頁面。 – 2010-10-01 14:27:42

+0

好的..試着把完整的道路,而不是? – Dan 2010-10-01 17:45:50

0

嘗試直接導航到ajax_favorite.php?song_id=745,並檢查是否返回blah blah,可能是服務器重定向時存在一些錯誤配置,將呼叫重定向到index.php。

0

在這個文件ajax_favorite.php?song_id = 745 你必須檢查,如果(isset($ _ GET [ 'song_id']){設置如果不設置不要」 t做任何事情

並確保你把這段代碼放在沒有使用html代碼的頁面內容的頂部, 和你的條件成功後,你只是回聲'成功';消息並檢查到你的jQuery成功這樣的代碼

注意:成功回顯消息後,你馬上執行退出命令,讓你永遠不會在底部或頁面或低於你的PHP代碼,所有的HTML我希望這將幫助ü

success: function(data) { 
    if(data == 'success'){ 
     $('#add_to_favorite_'+song_id).html(data or put your own message here); 
    } 
    else{ 
     soemething error :D 
    } 
}, 
相關問題