2012-01-26 5 views
1

저는 Ajax에서 시작하고 있으며 몇 가지 문제가 있습니다. 롤오버 할 때 일부 비디오 미리보기 이미지를 포함하는 목록이있는 페이지가 있습니다. "싫어합니다"아이콘이 표시됩니다. 끝났어. 이제 문제가있는 iam은 다음과 같습니다.Jquery Ajax - 응답이 html을 대체해야합니다.

아이콘을 클릭하면 비디오 제목 인 썸네일 & 정보가 사라지고 다른 비디오가 표시되어야합니다.

은 여기에 (200 OK) 응답을 점점 내 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);    
    } 
}); 
} 

요청이 작동, 메신저입니다. 그리고 그것은 새로운 비디오를위한 HTML 코드 블록을 반환합니다.

문제는 입니다. 아이콘을 클릭하면 div의 모든 HTML이 사라집니다.. 나는 빈 꼬리표를 가지고있어서, 나는 그 꼬리표를 "비어있는"것으로 해석한다고 생각한다. 하지만 내 firebug .Net 탭에서 나는 분명히 응답을 볼 수 있습니다.

도움이 필요하십니까? ALREADY 고정 , 감사

* * 편집 **

지금 $ (이) 부모()와 특정 사업부를 대상으로 문제가 메신저. 누군가 도울 수 있습니까?

나는 리 #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 함수는 대부분 복잡한 트랜잭션을 위해 존재하며 매우 간단한 것처럼 보입니다. 전용 데이터 매개 변수를하지 않습니다

$.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

감사합니다. Didnt는 성공/완료의 응답이 다르다는 것을 알고 있습니다! – Lelly

+0

Im에 또 다른 문제가 있습니다. 내 첫 번째 게시물을 확인해주세요. – Lelly

1

변경

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 콜백 complete to success에서 : 내가 제안 jQuery를이 제공 그래서 같은 "바로 가기"기능을 사용하고 있습니다 jqXHR 매개 변수

관련 문제