2012-01-26 81 views
1

我開始在Ajax中,我有一些問題。我有一個包含一些視頻縮略圖的列表頁面,當您翻閱它們時,會顯示一個「我不喜歡這個」圖標。完成了。現在我有問題是:jQuery的Ajax - 響應應取代html

當你點擊該圖標,視頻標題,縮略圖&信息應該消失,並且必須顯示另一個視頻。

這裏是我的Ajax代碼

function ThumbsDown(id,sort,page) { 
$.ajax({ 
    url: "/change/videos/"+id+"/thumbsdown/", 
    type: "POST", 
    data: { 
     "sort": sort?sort:"", 
     "page": page?page:"" 
    }, 
    complete: function(result) { 
     // Instead of calling the div name, I need to be able to target it with $(this) and .parent() to make sure only 1 video change, but for now I only want the response to replace the video 
     $("#content .videoList ul li.videoBox").html(result);    
    } 
}); 
} 

請求工作,即時通訊剛開(200 OK)響應。它將新視頻的HTML代碼塊返回給我。

問題是,當我點擊圖標時,,div中的所有html都不見了。我有一個空標籤,所以我想它的解釋爲「空」。但在我的螢火蟲.Net標籤中,我清楚地看到有一個迴應。

請幫忙嗎? 已經定型,多虧

* *編輯**

現在即時通訊有瞄準特定的分度,$(本)和父母()的問題。有人可以幫忙嗎?

我要定位的李#videoBox

<li class="videoBox recommended"> 
    <div class="spacer" style="display: block;"></div> 
    <div class="features"> 
     <div> 
     <a class="dislike_black" title="I dislike this" onclick="ThumbsDown(30835, 'relevance', '1');"></a> 
     </div> 
    ... 

我想這一點,並且它不工作。

success: function(data) { 
     $("#content .videoList ul li.videoBox").html(data); // this IS WORKING, but replacing ALL the thumbs 
     $(this).parents("li.videoBox").html(data); // THIS IS NOT 

我在做什麼錯?

回答

3

您遇到的問題是您正在使用「完成」回調函數。這可能會導致錯誤,但是回調意味着在成功或失敗後被調用。這是更多的清理,並沒有收到你所期望的響應數據。基本上,你所需要做的就是將「完整」改爲「成功」,並且你應該收到你期望的結果。

但是,我個人不建議使用Ajax函數,因爲它看起來完全有必要。 Ajax函數主要用於複雜事務,看起來你有一個相當簡單的事務。我的建議,使用「快捷方式」功能,jQuery提供,像這樣:

$.post("/change/videos/"+id+"/thumbsdown/", {sort:"", page:""}, function(result){ 
    // Instead of calling the div name, I need to be able to target it with $(this) and .parent() to make sure only 1 video change, but for now I only want the response to replace the video 
    $("#content .videoList ul li.videoBox").html(result); 
}, "html"); 
+0

非常感謝!不知道成功/完成的反應是不同的! – Lelly

+0

我有另一個問題,請檢查我的第一篇文章嗎? – Lelly

1

變化從complete to success

function ThumbsDown(id,sort,page) { 
$.ajax({ 
    url: "/change/videos/"+id+"/thumbsdown/", 
    type: "POST", 
    data: { 
     "sort": sort?sort:"", 
     "page": page?page:"" 
    }, 
    success: function(result) { 
     // Instead of calling the div name, I need to be able to target it with $(this) and .parent() to make sure only 1 video change, but for now I only want the response to replace the video 
     $("#content .videoList ul li.videoBox").html(result);    
    } 
}); 
} 

complete回調不像成功並不能得到數據參數,只參數jqXHR