나는이 같은 API를 호출하기 위해 노력하고 제공되지 콜백 :JSONP로 Ajax 호출이 작동하지 않습니다.
var url = 'http://[api link]?callback=?';
$.ajax({
type: 'GET',
url: url,
async: true,
xhrFields: {
withCredentials: true
},
jsonpCallback: 'jsonCallback',
contentType: "application/json",
dataType: 'jsonp',
success: function(json) {
console.dir(json.sites);
},
error: function(e) {
console.log(e.message);
}
});
을하지만 브라우저에서 항상이 형식으로 보여줍니다
그리고 피들러의 나는이 다음과 같은 오류가 발생합니다 :
호출이 만들어 the.js 파일에서[InvalidOperationException: A callback parameter was not provided in the request URI.]
WebApiContrib.Formatting.Jsonp.JsonpMediaTypeFormatter.GetPerRequestFormatterInstance(Type type, HttpRequestMessage request, MediaTypeHeaderValue mediaType) + 320
System.Net.Http.Formatting.DefaultContentNegotiator.Negotiate(Type type, HttpRequestMessage request, IEnumerable` 1 formatters) + 199
System.Web.Http.Results.NegotiatedContentResult` 1.Execute(HttpStatusCode statusCode, T content, IContentNegotiator contentNegotiator, HttpRequestMessage request, IEnumerable` 1 formatters) + 103
System.Net.Http.HttpRequestMessageExtensions.CreateResponse(HttpRequestMessage request, HttpStatusCode statusCode, T value, HttpConfiguration configuration) + 235
System.Net.Http.HttpRequestMessageExtensions.CreateErrorResponse(HttpRequestMessage request, HttpStatusCode statusCode, Func` 2 errorCreator) + 298
System.Web.Http.ExceptionHandling.DefaultExceptionHandler.Handle(ExceptionHandlerContext context) + 152
System.Web.Http.ExceptionHandling.DefaultExceptionHandler.HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken) + 12
System.Web.Http.ExceptionHandling. & lt;
HandleAsyncCore & gt;
d__0.MoveNext() + 136
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) + 144
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) + 84
System.Runtime.CompilerServices.TaskAwaiter` 1.GetResult() + 49
System.Web.Http. & lt;
SendAsync & gt;
d__0.MoveNext() + 1584
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) + 144
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) + 84
System.Runtime.CompilerServices.TaskAwaiter` 1.GetResult() + 49
System.Web.Http.WebHost. & lt;
ProcessRequestAsyncCore & gt;
d__0.MoveNext() + 624
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) + 144
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) + 84
System.Web.TaskAsyncHelper.EndTask(IAsyncResult ar) + 98
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() + 606
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean & amp; completedSynchronously) + 288
는,이 같은 기능을 정의했습니다 :
jsonCallback = function(data) {
}
여기서 내가 뭘 잘못하고 있니?
편집 : 아약스 오류의
스크린 샷 :
편집 :
WebapiConfig.cs
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
//add support for JSONP
var formatter = new JsonpMediaTypeFormatter(jsonFormatter, "cb");
config.Formatters.Insert(0, formatter);
//Add Support CORS
config.EnableCors();
콜백 함수 이름과 jsonpCallback 속성이 정확히 텍스트와 케이싱에 일치합니까? – PeonProgrammer
@jmogera'성공 : function (json, textStatus, jqxhr) {console.dir (jqxhr.responseText);}, 오류 : function (jqxhr) {console.dir (jqxhr.responseText);}'; 가능하면'responseText'를 게시 할 수 있습니까? 감사합니다 – guest271314
@ guest271314 코드가 그렇게까지 만들지 않습니다. 500 내부 서버 오류가 발생합니다. 피들러로 전화 응답을 들여다 보면 위의 오류 목록을 볼 수 있습니다. – jmogera