2013-02-07 2 views
3

BLUF : Chrome 확장 프로그램에서 AJAX를 실행해도 제대로 작동하지 않습니다.jQuery 문제 (Chrome 확장 프로그램의 AJAX 통화)

AJAX :

$.ajax({ 
    type: "GET", 
    url: "http://weather.aero/dataserver_current/httpparam?dataSource=metars&requestType=retrieve&format=xml&stationString=KFBG&hoursBeforeNow=1&fields=raw_text", 
    dataType: "xml", 
    success: function(xml){ 
     $(xml).find("raw_text").each(function(){ 
      var metar = $(this).text(); 
     }); 

     $("#ob-body").html(metar); 
    } 
}); 

그래서 데이터 XML을 요청하는 GET을 필요로하는 사이트에서 날씨 정보를 얻으려고

. URL에 대한 요청 문자열을 작성하는 데 대한 팁을 제공하고 주소 표시 줄에 URL을 붙여 넣으면 적절한 XML 데이터가 올바르게 표시됩니다.

다음으로 AJAX 호출을 조합하여 실행했지만 아무 것도 일어나지 않는 것 같습니다. 성공 속성의 함수를 'alert()'로 변경하고 확장 프로그램을 다시 실행하면 경고 상자가 나타납니다.

경고가 표시된다는 사실은 제가 점심을 먹기 전까지는 성공적이었던 것을 의미합니다 ... 원래의 기능이 작동하지 않는 이유는 무엇입니까? XML을 검색하는 코드가 올바르지 않을 수도 있다는 것을 알았지 만, 문서를 다루기 전에 경고를하는 것은 아무 것도 나타나지 않고 어떤 이유로 함수에 들어 가지 못한다고 알려줍니다.

+0

동일한 출처 정책 위반을 확인 했습니까? http://en.wikipedia.org/wiki/Same_origin_policy –

+0

'success : function() {alert()}'또는 'success : alert()'와 같이 변경 했습니까? 첫 번째는 전화가 작동 중임을 의미합니다. 두 번째는 경고가 즉시 호출되기 때문에 그 것을 의미하지는 않습니다. –

+0

완벽하게 작동하는 확장 프로그램 faq http://developer.chrome.com/extensions/xhr.html –

답변

2

. 크롬은 확장에서 크로스 도메인 아약스 요청을 할 수 있습니다하지만 우리는 the document

에 주어진대로

같은 매니페스트 파일에 도메인 간 액세스 권한을 추가 할 수 있습니다 같은 확장 매니페스트 파일에 사용 권한을 보이는데 추가해야
{ 
    "name": "My extension", 
    ... 
    "permissions": [ 
    "http://weather.aero/" 
    ], 
    ... 
} 
+0

의 교차 도메인 권한 섹션을 확인하십시오! 그들이 제공하는 서버 요청에 액세스 할 수 있어야한다는 것을 알고 있었지만 Chrome 사용 권한 요구 사항을 간과했습니다. 그 문제를 고쳤어, 고마워! –

0

는 당신이 성공 함수에서 그것을해야한다고 생각 :

이 때문에 AJAX 요청의 동일한 기원 정책 제약 할 수있다
$(xml).find("raw_text").each(function(){ 
    var metar = $(this).text(); 
    $("#ob-body").html(metar); 
}); 
관련 문제