Mon appel ajax jQuery échoue avec une erreur non définie. Mon code js ressemble à ceci:L'appel ajax jQuery échoue avec une erreur indéfinie
$.ajax({
type: "POST",
url: "Data/RealTime.ashx",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
timeout: 15000,
dataFilter: function(data, type) {
alert("RAW DATA: " + data + ", TYPE: "+ type);
return data;
},
error: function(xhr, textStatus, errorThrown) {
alert("FAIL: " + xhr + " " + textStatus + " " + errorThrown);
},
success: function(data) {
alert("SUCCESS");
}
});
Ma ajax source est un gestionnaire d'ASP.NET générique:
[WebService(Namespace = "http://my.website.com")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class RealTime : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
context.Response.Write("{ data: [1,2,3] }");
context.Response.End();
}
public bool IsReusable
{ get { return false; } }
}
Maintenant, si je retourne un objet vide ("{ }"
) dans mon gestionnaire, l'appel réussir. Mais quand je retourne un autre objet JSON, l'appel échoue.
Le gestionnaire dataFilter
montre que je reçois un objet correct. Firebug affiche la réponse comme prévu, et l'onglet JSON montre que l'objet est analysé correctement.
Alors, quelle pourrait être la cause?
[Modifier] j'aurais fait écrit « quand je reviens tout invalide objet JSON, l'appel échoue »! : D
Ce que vous avez n'est pas valide JSON, qu'est-ce que vous obtenez quand vous le changez: 'context.Response.Write (" {\ "data \": [1,2,3]} "); –
Merci beaucoup, ça l'a fait. Firebug est évidemment un peu moins strict sur l'analyse, donc je n'y ai pas pensé du tout. Vous pouvez copier ceci dans une réponse pour que je puisse l'accepter. – Groo
Firebug n'analyse pas * JSON *, il analyse * Javascript * - il y a une différence. Si vous aviez utilisé Firebug pour passer cette chaîne dans une implémentation Javascript d'un analyseur JSON strict, vous auriez eu des erreurs. – Pointy