2014-11-27 3 views
0

제 고객이 json 데이터를 반환하는 webservice 링크를 제공했습니다. 나는 그것을 탐색하고 좋은 결과를 얻었다. 나는 간단한 HTML 페이지를 생성 웹 서비스에서 JSON 데이터를 가져 오는 중 오류가 발생했습니다.

 var myCallback = function (data) { 
      alert("Data:" + data); 
     }; 

var url = "http://xxx/getToken";   

var params = { username: "abc", password: "123" } 

     $.ajax({ 
      type: "GET", 
      url: url, 
      data: params, 
      contentType: "text/plain", 
      dataType: 'jsonp', 
      crossDomain: true, 
      cache: false, 
      success: myCallback, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       alert(errorThrown); 
       alert(XMLHttpRequest.responseText); 
      }, 
      async: false 
     }); 

를 JQuery와 아약스

를 사용하지만 항상 오류 "NetWorkError"를 반환하지만, 뿐인에서 브라우저 등 같은 결과를 결과를 추적 ???

그리고 I가, 예를 들어 URL을 변경할 때!

 var url = "http://api.openweathermap.org/data/2.5/weather"; 
     var params = { lat: "35", lon: "139" } 

그것은 잘 작동합니다 .... 나는 정확히 문제는 IIS 구성 또는 JQuery와 아약스 라이브러리입니다 모르겠어요.

이 문제를 해결할 수있는 해결책이 있습니까?

감사합니다 !!!

+0

dataType : "jsonp"? "json"이어야합니다! 내가 잘못 ? – p0k3

+0

서비스가 순수 Json을 반환하고 함수가 아닌 경우 응답이 들어 오면 데이터 유형을 "json"으로 변경하고 "data"를 처리해야합니다. – Robert

+0

에 networkerror에 대한 자세한 정보가 있습니까? – linuxlsx

답변

0

문제는 당신이 JSONP는 비동기가 출발한다) JSON 데이터를
B를 전송 단지 기술이다
JSON을 사용한다 어디
A)는 JSONP를 사용하는 것이, 그래서 당신이 broswer는에서 응답을 기대 요청을 보냈을 때
응답을 기다리는 동안.

그래서 나는이 문제를 해결하는 솔루션을 발견, 마지막으로이

var myCallback = function (data) { 
     alert("Data:" + data); 
    }; 
var url = "http://xxx/getToken";   
var params = { username: "abc", password: "123" } 
    $.ajax({ 
     type: "GET", 
     url: url, 
     data: params, 
     contentType: "text/plain", 
     dataType: 'json', 
     crossDomain: true, 
     cache: false, 
     success: myCallback, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      alert(errorThrown); 
      alert(XMLHttpRequest.responseText); 
     }, 
     async: true 
    }); 
+0

json을 시도하고 비동기는 true이지만 아니요는 것을 잊어 버렸습니다. 행운을 빌어 요. 나는 몇 가지 방법을 시도했다 ... "json"& "async"를 설정하면 2 개의 메시지가 나타난다. errorThrown = emtpy & responseText가 정의되지 않았다. –

+0

@BacClunky, 그러면 서버가 이상한 일을한다. JS에 없어. – SZenC

0

을 시도합니다. 주요 문제는 크로스 사이트 액세스 데이터 정책입니다. 내 고객의 API 서비스가 포함되어 있지 않습니다.

Access-Control-Allow-Origin: * 
Access-Control-Allow-Credentials: true 
Access-Control-Allow-Methods: GET, POST 

따라서 브라우저는 json 데이터를 얻기 위해 내 ajax 요청을 허용하지 않습니다. 수동으로 데이터를 가져 오기 위해 (IE) 인터넷 설정 -> 기타 -> 데이터 소스 액세스 (활성화)를 설정해야합니다.

결론적으로이 항목을 헤더에 추가해야합니다. 우선 순위가없는 경우 브라우저 설정에서 헤더에 이러한 값이없는 경우

관련 문제