2013-09-25 5 views
2

je simple ApiController je teste:jquery ajax appel à api web .NET renvoie l'erreur

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; 
     } 
    } 
} 

Et du côté client que je vous appelle cela d'un autre domaine

$.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); 
}); 

Mon problème est que la demande JSONP me retourne AllWays une erreur

parsererror Error: jQuery20301899278084596997_1380125445432 was not called

J'ai cherché arround mais n'a pas trouvé une solution pour cela.

EDIT: j'oublié de mentionner que l'utilisation Fiddler les valeurs renvoyées semblent-tête correcte est de 200 et le contenu est un tableau JSON.

+0

jsonp doit être traité côté serveur. où du côté serveur vous faites quelque chose comme ceci: 'return 'myCallBack (" + data + ");" '? –

+0

@RoyiNamir est là de toute façon que je peux savoir quelle est la valeur de rappel automatique créée du côté serveur? – FabioG

+0

Demande ["callback"] –

Répondre

1

Regardez WebApiContrib.Formatting.Jsonp pour gérer correctement votre appel JSONP.

Sur console gestionnaire de paquets:

Install-Package WebApiContrib.Formatting.Jsonp 
0

Pour pouvoir utiliser différents formats de sortie dans api web, vous devez vous enregistrer Formateurs appropriées FormatterConfig. Ajoutez également contentType: "application/json" à votre appel ajax. Plus d'informations détaillées peuvent être trouvées here