2014-09-02 11 views
2

나는이 같은 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); 
    } 
}); 

을하지만 브라우저에서 항상이 형식으로 보여줍니다

그리고 피들러의 Error Image 나는이 다음과 같은 오류가 발생합니다 :

호출이 만들어 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) { 

} 

여기서 내가 뭘 잘못하고 있니?

편집 : 아약스 오류의

스크린 샷 : enter image description here

편집 :

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(); 
+0

콜백 함수 이름과 jsonpCallback 속성이 정확히 텍스트와 케이싱에 일치합니까? – PeonProgrammer

+0

@jmogera'성공 : function (json, textStatus, jqxhr) {console.dir (jqxhr.responseText);}, 오류 : function (jqxhr) {console.dir (jqxhr.responseText);}'; 가능하면'responseText'를 게시 할 수 있습니까? 감사합니다 – guest271314

+0

@ guest271314 코드가 그렇게까지 만들지 않습니다. 500 내부 서버 오류가 발생합니다. 피들러로 전화 응답을 들여다 보면 위의 오류 목록을 볼 수 있습니다. – jmogera

답변

0

당신이하려고하면 그것은 무엇을 반환하지?

$.ajax({ 
    url: 'http://[api link]', // without the callback at the end 
    type: 'GET', 
    dataType: 'jsonp', 
    success: function (result) { 
    $('#jsonp').html(result); 
    } 
}); 
+0

내가 추가 한 스크린 샷을 확인하십시오. – jmogera

+0

@jmogera 브라우저에서 작동하지 않는 http : // [api link] 링크를 엽니 다. 작동합니까? 또한 WebApiContrib 프로젝트 https://github.com/WebApiContrib/WebApiContrib.Formatting.Jsonp –

+0

의 샘플을 보면 브라우저에서 데이터가 xml 형식으로로드됩니다. webapiconfig.cs 파일에있는 코드를 추가했습니다. 나는 위의 링크가 어떻게 제안했는지에 따라 그것을하려고 시도 할 것이다. – jmogera

관련 문제