2014-10-01 2 views
0

서비스와 통화하는 RESTful 웹 서비스 및 jquery 플러그인이 있습니다. 도메인이 다르므로 JSONP를 구현했으며 모든 것이 잘 작동합니다.동일한 도메인에서 JSONP을 사용할 수 있습니까

저는 몇 가지 변경 작업을 수행 중이며 localhost에 테스트 클라이언트 및 테스트 서비스를 호스팅했지만 JSONP 콜백은 더 이상 호출되지 않습니다.

여기 내 jquery 전화입니다.

var urlbase = 'http://localhost:8080'; 

$.getJSON(urlbase + '/Geography/Countries?callback=?', function (results) { 
    alert(results); 
    // populate the country lookup 
    $.each(results, function (key, value) { 
     $('select#countrylookup') 
      .append($('<option></option>') 
      .attr('value', value.Code)  
      .text(value.Name)); 
    }); 

나는 서비스가 호출되고 내 서비스 중단 점을 명중하고 내가 피들러/F12 도구의 요청/응답을 볼 수 있기 때문에 결과가 반환되고 있다는 사실을 알고있다.

내가 (로컬 도메인)에 JSON이 필요하고 크로스 도메인 용으로 JSONP가 필요한 경우 다른 사람들이 테스트 할 때 어떤 전략을 사용합니까? 분명히 나는 ​​if (domain == local) 스타일 코드를 원하지 않는다.

답변

0

업데이트 : 내 문제는 VS2010 웹 서버 내에있는 것으로 밝혀 당신이이 crossDomain 속성을 사용하여 JSONP를 사용하도록 지정할 수 있도록 ajax 방법을 사용합니다. 로컬 IIS에서 사이트를 호스트해도 전혀 문제가 없습니다. 심지어 원래의 getJSON을 사용합니다.

저는 지금 이틀 정도 달리기를했는데 모두 괜찮아 보입니다. VS2010과 WebDev.WebServer40.exe의 사용에 관해 필자의 원래 질문에서 언급하지 못했습니다.

실제 질문에 대답하려면 : 예, localhost에서 JSONP를 사용할 수 있습니다.

1

getJSON 메서드는 URL에서 교차 도메인 호출인지 여부를 확인하므로 동일한 도메인에 대한 JSONP 호출을 수행하는 데 사용할 수 없습니다.

$.ajax({ 
    url: urlbase + '/Geography/Countries?callback=?', 
    cache: false, 
    crossDomain: true, 
    success: function (results) { 
    alert(results); 
    // populate the country lookup 
    $.each(results, function (key, value) { 
     $('select#countrylookup') 
     .append($('<option></option>') 
     .attr('value', value.Code)  
     .text(value.Name)); 
    }); 
    } 
}); 
+0

시간을내어 주셔서 감사합니다. 불행히도 저는 여전히이 작업을 수행 할 수 없습니다. 로컬 요청을 할 때 400 개의 잘못된 요청을받습니다. –

+0

업데이트 : 내 문제가 VS2010 웹 서버 내에 있다고 밝혀졌습니다. 로컬 IIS에서 사이트를 호스트해도 전혀 문제가 없습니다. 심지어 원래의 getJSON을 사용합니다. 더 정확한 검사를 할게. –

+0

그것은 내 실제 문제를 해결하지 못했지만, 나는 'crossDomain'설정을 인식하지 못했기 때문에이 답변을 Upvoted $ .ajax –

관련 문제