2014-10-25 2 views
0

에 아약스 JQuery와 요청을 변경 내가 jQuery로이 Ajax 요청이 있습니다는 XMLHttpRequest를

$(document).ready(function() { 
    var pageName; 

    $('li a').on('click', function(){ 
     pageName = $(this).attr('data-url'); 

     $.ajax({ 
      type: 'GET', 
      url: 'http://mywebsite.com/' + pageName + '/?json=1', 
      contentType: 'application/json', 
      dataType: 'jsonp', 
      success: function(data) { 
       var page = data.content; 
       $('.mypage').html(page); 
      } 
     }) 
    }); 
}); 

을 그리고 내가 XMLHttpRequest를 변경하려면, 그래서 난 이런 짓을 : 그것은 전혀 작동하지 않습니다

function showPage() { 

    var httpRequest = new XMLHttpRequest(); 
    httpRequest.onreadystatechange = function() { 
     if (httpRequest.readyState == 4) { 
      document.getElementById('.mypage').innerHTML = httpRequest.responseText; 
     } 
    }; 

    var attr = document.getElementByTagName(this); 
    var pageName = attr.getAttribute('data-url'); 
    var url = 'http://mywebsite.com/' + pageName + '/?json=1', 

    httpRequest.open('GET', url); 
    httpRequest.send(); 
} 

, 아무도 내가 뭘 잘못했는지 아니?

+0

open (method, url, async) 요청의 유형, URL 및 요청을 비동기 적으로 처리해야하는지 여부를 지정합니다. 방법 : 요청 유형 : GET 또는 POST URL : 가 열려() 함수 –

+0

제 3 인수에 하나 개의 매개 변수 누락 사실 (비동기) 또는 false (동기) 다음 서버 비동기에있는 파일의 위치 to open()은 생략되면 기본값을 true로 설정합니다. – dandavis

답변

0

이 줄은 잘못된 것입니다 :

document.getElementById('.mypage').innerHTML = httpRequest.responseText; 

.로 시작하는 선택은 클래스 선택이 아닌 ID입니다. 다음과 같아야합니다.

document.getElementsByClassName('mypage')[0].innerHTML = httpRequest.responseText; 

이 클래스에는 하나의 요소 만 있다고 가정합니다. 여러 개가있는 경우이를 모두 설정하는 루프로 변경해야합니다.

그러나 XMLHttpRequest를 JSONP dataType과 함께 사용할 수는 없습니다. 원시 자바 스크립트와 JSONP을 구현하는 방법에 대한

JavaScript XMLHttpRequest using JsonP

를 참조하십시오.

+0

getElement ** ** ByClassName이어야합니다. – rjdown