위의 서비스에 대한
이제
[ServiceContract]
public interface IJSONPService
{
[OperationContract]
[WebGet]
string GetDate();
[OperationContract]
[WebInvoke]
string PostData(string name);
}
내 설정 항목을 표시 보이는 :
<services>
<service name="Service.JSONPService">
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="json" bindingConfiguration="defaultRestJsonp" contract="Service.IJSONPService">
</endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="json">
<enableWebScript />
</behavior>
</behaviors>
</endpointBehaviors>
<webHttpBinding>
<binding name="defaultRestJsonp" crossDomainScriptAccessEnabled="true">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="64" maxNameTableCharCount="2147483647" />
<security mode="None" />
</binding>
</webHttpBinding>
당신은 할 요청을 결정을 담당 바인딩 요소 "defaultRestJsonp"의 crossDomainScriptAccessEnabled
속성을주의 할 필요가 적절하게 응답을 변환 JSONP과 페이지에서
이제 쿼리 문자열로 제공되는 URL에서 콜백 메서드에서 할 포장되는 WCF REST 서비스 위의 그림과 같이 호출 자바 스크립트 아래 :
function TestingWCFRestWithJsonp() {
$.ajax({
url: "http://domain.com/Service/JSONPService.svc/GetDate",
dataType: "jsonp",
type: "GET",
timeout: 10000,
jsonpCallback: "MyCallback",
success: function (data, textStatus, jqXHR) {
alert(data);
},
error: function (jqXHR, textStatus, errorThrown) {alert('error');
},
complete: function (jqXHR, textStatus) {alert('complete');
}
});
}
function MyCallback(data) {
alert(data);
}
$ .ajax 메서드 호출에서 jsonpCallback 속성을 확인하십시오.
GET http://localhost/Service/JSONPService.svc/GetDate?callback=MyCallback&_=1343391683779 HTTP/1.1
Host: localhost
Connection: keep-alive
을 그리고 WCF REST 서비스에서 원시 응답은 다음과 같습니다 :
웹 서비스 호출에 원시 요청은 다음과 같습니다
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/x-javascript
Date: Fri, 27 Jul 2012 12:21:23 GMT
Content-Length: 27
MyCallback("27\/07\/2012");
참고 : JSONP를 수행 할 때 $ .ajax 메소드를 요청하십시오 error/complete/success가 호출되지 않습니다.
또한 예를 들어 서비스가 어떻게 사용되고 jquery가 사용되는지 샘플 코드를 게시 해주세요. – Rajesh