2010-05-18 4 views
2

다음 자바 스크립트 코드는 "> success- <"즉 빈 데이터를 제공합니다. 내 브라우저에 URL을 붙여 넣어 예상되는 콘텐츠를 제공합니다.jQuery와 아약스를 사용하여 회사 위키에서 데이터 가져 오기

$.get("http://company.tld/wiki/api.php?action=query&titles=Page%20Title&format=xml&prop=revisions&rvprop=content", function (data, status) { 
    alert(">" + status + "-" + data + "<"); 
}); 

MediaWiki 위키입니다. 다음은 MediaWiki API 사양입니다. http://www.mediawiki.org/wiki/API:Query

왜 데이터가 표시되지 않습니까?

답변

0

거기에 아약스 교차 도메인 정책을 위반했을 수 있습니다. 도메인에서 내 도메인에 액세스하려고합니까? 당신의 대본에있는 것이 더 낫다고 말했습니까?

내 경험에 비추어 볼 때, 외부 도메인에서 데이터에 액세스하려고하면 성공 처리기가 관계없이 실행됩니다. 그러나 당신이 설명 할 때 전혀 데이터가 없습니다.

+0

오류가 발생하면 success 콜백이 호출되지 않으므로 $ .get가 성공적으로 수행되어 – Oleg

+0

을 다시 읽으면주의 깊게 읽습니다. 외부 도메인에 대한 jQuery ajax 호출을 생성하면 성공 데이터 핸들러가 빈 데이터 크롬) – jAndy

+0

당신이 옳은 것처럼 보입니다. 같은 URL을 사용하여 GM_xmlhttpRequest를 사용해 보았습니다. 그거야. (GreaseMonkey는 요청이 "동일한 출처 정책"경계를 넘을 수 있도록 허용합니다) – Tobbe

0

data가 개체 인 경우 닫기 결과를 받게됩니다. 경고에 typeof data을 사용해보십시오. jAndy에 :

업데이트 jQuery.ajax의 문서에서 우리는 다음과 같은 읽을 수 있습니다 ( http://docs.jquery.com/Ajax_Events 참조)

  • 성공 (로컬 이벤트). 이 이벤트는 요청이 성공한 경우에만 호출됩니다 (서버에서 오류가 발생하지 않고 데이터 오류가 없음).

난 그냥이 도메인 간 호출을 사용하려고 할 경우 다음 코드

try { 
    $.ajax({url:"http://en.wikipedia.org/w/api.php?action=query&titles=jQuery&format=xml&prop=revisions&rvprop=content", 
      success: function (data, status, x) { 
      alert ("ok"); 
      }, 
      error: function (data, status, x) { 
      alert ("not ok"); 
      }, 
      dataType:"xml"}); 
} catch (e) { 
    alert ("exception"); 
}; 

을 실행했습니다. IE에서는 "예외"알림을 볼 수 있습니다. Chrome과 Firefox의 경우 : "not ok". 오류가 발생하면 함수 성공은 NOT으로 호출됩니다.

그래서 서버의 데이터는 실제로 Tobbe의 URL에 대한 빈 문자열 ("")입니다.

To Tobe : 아마 마지막 매개 변수 "xml"을 추가해야합니다.

+0

'typeof data'는 "string"을 반환합니다 – Tobbe

+0

확실한 크로스 도메인 호출입니까? – jAndy

관련 문제