2

私はテストしている単純な ApiController を持っています:

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 エラー: jQuery20301899278084596997_1380125445432 は呼び出されませんでした

私は周りを探してきましたが、まだこれに対する解決策を見つけていません。

編集: フィドラーを使用すると、返される値は正しいヘッダーが200で、コンテンツがJSON配列であるように見えることを忘れていました。

4

3 に答える 3

1

WebApiContrib.Formatting.Jsonpを見て、JSONP 呼び出しを正しく処理してください。

パッケージ マネージャー コンソールで:

Install-Package WebApiContrib.Formatting.Jsonp
于 2013-09-25T17:38:06.133 に答える
0

Web API でさまざまな出力形式を使用できるようにするには、適切な Formatter を に登録する必要がありますFormatterConfigcontentType: "application/json"また、ajax 呼び出しに追加します。より詳細な説明は、ここで見つけることができます

于 2013-09-25T18:05:35.283 に答える