2013-09-25 6 views
2

У меня есть простой ApiController я тестирование:JQuery Ajax вызов веб-API .NET возвращает ошибку

namespace SMOnline.Controllers 
{ 
    public class DocumentosController : ApiController 
    { 
     Documentos[] docs = new Documentos[] 
     { 
      new Documentos { ID = 1, Tipo = 1, Designacao = "FC001"}, 
      new Documentos { ID = 2, Tipo = 1, Designacao = "FC002"} 
     }; 

     public IEnumerable<Documentos> GetAll() 
     { 
      return docs; 
     } 
    } 
} 

А на стороне клиента, я звоню это из другого домена

$.ajax({ 
    async: true, 
    type: 'GET', //GET or POST or PUT or DELETE verb 
    url: apiUrl + 'Documentos/', // Location of the service 
    dataType: 'jsonp', //Expected data format from server 
}) 
.done(function (data) { 
    // On success, 'data' contains a list of documents. 
    $.each(data, function (key, item) { 
     alert(item.Designacao); 
    }) 
}) 
.fail(function (jqxhr, textStatus, error) { 
    alert(textStatus + " " + error); 
}); 

Моя проблема заключается в том, что запрос JSONP это возвращение мне ВСЕГДА ошибку

parsererror Error: jQuery20301899278084596997_1380125445432 was not called

Я был поиск Arround, но до сих пор не нашел решение для этого.

EDIT: Я забыл упомянуть, что с помощью скрипача возвращаемых значений кажутся правильный заголовок 200 и содержимое представляет собой массив JSON.

+0

jsonp следует обрабатывать со стороны сервера. где на стороне сервера вы делаете что-то вроде этого: 'return 'myCallBack (" + data + ");"? –

+0

@RoyiNamir есть все равно, что я могу знать, что такое автоматическое значение обратного вызова, созданное на стороне сервера? – FabioG

+0

Request ["callback"] –

ответ

1

Посмотрите на WebApiContrib.Formatting.Jsonp, чтобы правильно обработать ваш вызов JSONP.

На пакете менеджер консоли:

Install-Package WebApiContrib.Formatting.Jsonp 
0

Чтобы иметь возможность использовать различные форматы вывода в Web API, вы должны зарегистрировать соответствующие Форматтеры в FormatterConfig. Также добавьте contentType: "application/json" к вашему вызову ajax. Подробнее можно найти здесь here

Смежные вопросы