Итак, вы говорите, что у вас есть код, подобный следующему:
function Pirate(name, hasParrot)
{
this.name = name;
this.hasParrot = hasParrot;
}
, и сервер отправляет эти данные JSON:
{
name: "Blackbeard",
hasParrot: true
}
, который jQuery преобразует в простойобъект, верно?Если это так, вы можете использовать пользовательский тип данных для синтаксического анализа данных сервера непосредственно в объект Pirate, например:
// First define the converter:
jQuery.ajaxSetup({
converters: {
"json pirate": function(obj) {
if(!obj.name || typeof obj.hasParrot === "undefined")
{
throw "Not a valid Pirate object!";
}
else
{
return new Pirate(obj.name, obj.hasParrot);
}
}
}
}
// Then use it!
$.ajax("http://example.com/getPirate", {
data: {id: 20},
dataType: "pirate",
success: function(pirate){
console.log(pirate instanceof Pirate); // Should be true
}
});
Редактировать: если вы действительно хотите пропустить шагчтобы преобразовать в JSON, вы могли бы заменить "json pirate"
выше на "text pirate"
и написать собственный синтаксический анализатор для необработанного текста, возвращаемого вызовом ajax.