2011-12-07 4 views
0

내 프로젝트에서 jQuery 주소 플러그인을 구현하려고합니다.

나는 Crawling 구현의 예 (예 : hashbangs)를 따르고 있습니다.

내 자바 스크립트 :

<script type="text/javascript"> 
    $.address.init(function(event) { 
     // Initializes plugin support for links 
     $('a:not([href^=http])').address(); 

     var handler = function(data) { 
      $('.content').html($('#content', data).html()).parent().show(); 
      $.address.title(/>([^<]*)<\/title/.exec(data)[1]); 
     }; 

     // Loads the page content and inserts it into the content area 
     $.ajax({ 
      url: '/index.php?ACT=87&action=shows&_escaped_fragment_=' + encodeURIComponent(event.value), 
      error: function(XMLHttpRequest, textStatus, errorThrown) { 
       handler(XMLHttpRequest.responseText); 
      }, 
      success: function(data, textStatus, XMLHttpRequest) { 
       handler(data); 
      }, 
      contentType: 'text/html' 
     }); 
    }); 
</script> 

은 $ 아약스() 호출이 내가 만든 더미 HTML 페이지를 요청 :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> 
    <head><title>testing</title> 
    </head> 
    <body> 
    <div id="content">test</div> 
    </body> 
</html> 

나는 text/html 콘텐츠 형식이 HTML 페이지를 보내고있다.

요청이 성공적으로 실행되고 처리기 익명 기능이 전체 페이지 데이터를 가져 오지만 $('.content).html() 명령이 작동하지 않습니다. alert($('#content', data).html());을 수행하면 null이 표시되고 아무런 변화가 없습니다. 오류는 없지만 내용도 없습니다.

나는이 시점에서 내 재치가 거의 끝나 ... 권장 사항은 무엇입니까?

편집 : 명확하게하기 위해 문제는 요청 자체 나 URL 또는 브라우저 보안 문제로 발생하지 않습니다. 페이지에서 내 요청의 데이터를 선택하고 표시 할 수 없습니다.

$ .ajax() URL을 존재하지 않는 페이지 (예 : 404 페이지)의 URL로 바꾸면 더 정확하게 404 메시지를 구문 분석하고 표시합니다.

답변

0

제대로 작동합니다. 누군가가 내가 $ 아약스()을 잘못하고 있었는지 말해 줄 수 있다면

$('.content').load('/index.php?ACT=87&action=shows&_escaped_fragment_=' + encodeURIComponent(event.value) +' #content'); 

여전히 알고 관심을 가질만한 : 나는 다음과 $ 아약스() 호출을 대체했다.

1

선택기 컨텍스트를 사용하는 것이 좋습니다.

$('#content', data) 

data는 jQuery를 객체 없기 때문에이 작동하지 않는, 그냥 HTML입니다. 내가 생각할 수있는

세 가지 옵션 :

1)

//not sure if you can just wrap data within the selector so putting it in a variable 
var myhtml = $(data); 
$('#content', myhtml) 

2) 당신의 더미 HTML 페이지는 해당 #content div의 수 되세요. 아약스를 통해 얻는다면 그냥 전체 페이지를 가질 필요는 없습니다.

3 ) 방금로드 된 파일 $('#result').load('ajax/test.html #container');

1

귀하의 아약스는 괜찮 컨텐츠의 특정 부분을 얻기 위해 선택기를 지정할 수 있습니다 jQuery.load 기능을 사용하는 코드를 재구성하려고합니다.

다른 답변을 JSFiddle에서 사용할 수 없지만 작동합니다.그래도 난 그것에 대해 이동하기 위해 최선의 방법을 의심 : 여기

var handler = function(data) { 
    // Create jQuery object with received data 
    var $content = $('<div></div>').html(data); 

    // Get the html that you wanted 
    var theHtml = $('#content', $content).html(); 

    // Place content into page proper 
    $('.content').html(theHtml).parent().show(); 

    // Rest of function... 
} 

그것은 모두 당신이 그 자학 유형 중 하나 인 경우 한 줄에 :

$('.content').html($('#content', $('<div></div>').html(data)).html()).parent().show(); 
관련 문제