Obtenga datos JSON con jQuery de un servicio .NET: se confunde con la configuración ajax
Acabo de pasar seis horas tratando de aclarar esto y no he tenido éxito.
Hay un servicio web HelloWorld .NET 3.5 en mi máquina local. @ Configure según sea necesario.
El servicio devuelve unList
de estructuras personalizadas.
Estoy tratando de consumirlo con jQuery 1.4.4.
Cuando trato de hacer lo quela documentació dice, siempre recibo una respuesta XML del servicio, lo que causa queparseerror
en jQuery o se pasa como una cadena tonta a lasuccess
función. @ Es decir, sin embargo combinodataType
yaccepts
(que, de acuerdo con la documentación, controla cómo larecibid datos se manejan), recibo un XML de regreso.
Pero, cuando hago algo que no se sigue lógicamente de la documentación, obtengo con éxito mi conjunto de objetos. @ Es decir, cuando ignoro adataType
yaccepts
, y establecercontentType: "application/json; charset=utf-8"
en cambio, funciona bien. PerocontentType
, de acuerdo con los documentos, controle los datossiendo enviad al servidor, no recibido.
$.ajax(
{
type: "GET",
url: "http://localhost:52624/Service1.asmx/HelloWorld",
dataType: "json",
//accepts can be anything, or it can be missing, doesn't matter, only depends on dataType
success: function(data, textStatus, jqXHR) {...},
error: function(jqXHR, textStatus, errorThrown) {...}
}
)
Result: controlador de error llamado, textStatus =parseerror
.
$.ajax(
{
type: "GET",
url: "http://localhost:52624/Service1.asmx/HelloWorld",
dataType: "application/json",
//accepts can be anything, or it can be missing, doesn't matter, only depends on dataType
success: function(data, textStatus, jqXHR) {...},
error: function(jqXHR, textStatus, errorThrown) {...}
}
)
Result: el servicio web devuelve XML, se pasa al controlador de éxito comostring
.
$.ajax(
{
type: "GET",
url: "http://localhost:52624/Service1.asmx/HelloWorld",
accepts: "json", // or "application/json"
success: function(data, textStatus, jqXHR) {...},
error: function(jqXHR, textStatus, errorThrown) {...}
}
)
Result: el servicio web devuelve XML, se analiza y se pasa comoIXMLDOMDocument2
.
$.ajax(
{
type: "GET",
url: "http://localhost:52624/Service1.asmx/HelloWorld",
contentType: "application/json; charset=utf-8",
success: function(data, textStatus, jqXHR) {...},
error: function(jqXHR, textStatus, errorThrown) {...}
}
)
Result: el servicio web devuelve JSON, que jQuery analiza parcialmente (los números y las cadenas se analizan en las propiedades de los objetos, pero las fechas permanecen en forma de"/Date(1303003305724)/"
).