#ajax #jquery #response
#ajax #jquery #ответ
Вопрос:
У меня есть URL, из которого я могу получить строку
Если строка ответа содержит что-то, все идет хорошо, но (не дай бог!) если результатом будет пустая строка типа «», jQuery 1.5.2 отобразит ее как [object XmlDocument]
следуйте кодам, пожалуйста :
$.post('/Applicant/RequestedJob/IsThereActivePeriod',{},
function(data){
if(data == '' )
{
//do something here!
}
else
{
console.log(data.toString());
// [object XMLDocument] will be printed in console.
}
});
Возможно, я должен упомянуть, что раньше он отлично работал на jQuery 1.4.4
есть идея?
С уважением 🙂
Комментарии:
1. является
openDialog
диалогом пользовательского интерфейса jquery??2. да! но смысл в чем-то другом!!! 😉 это значение параметра данных
3. вы имеете в виду, что вы получаете
[object XMLDocument]
в диалоговом окне??4. нет! значение данных, которые должны были быть пустой строкой, равно [object XmlDocument]
5. означает, что где-то у вас есть какой-то заголовок
header('content-type: xml/doc')
Ответ №1:
Вы должны установить ожидаемый тип данных ответа в вашем вызове ajax, вот так:
$.post('/Applicant/RequestedJob/IsThereActivePeriod',{},
function(data){
if(data == '' )
openDialog('/Applicant/RequestedJob/AddRequestedJobWindow','pnlRequestedJob','Request Window');
else
{
msgbox.show(data.toString(),'Error', msgBoxButtons.okOnly);
console.log(data.toString());
}
},
'html'
);
Без этого jQuery пытается определить тип ответа в соответствии с этим:
По умолчанию: интеллектуальное предположение (xml, json, script или html).
Поскольку возвращаемого содержимого нет, он, по-видимому, использует XML. Передавая ‘html’ в качестве типа данных, вы заставляете jQuery интерпретировать ответ как HTML и сохранять результат в виде обычного текста.
Согласно некоторым комментариям, соответствующий заголовок типа содержимого должен позволять jQuery определять, что ваша пустая строка является HTML, достигая того же результата без явной установки ожидаемого типа данных в вызове ajax.
Причина, по которой вы получаете, [object XMLDocument]
заключается в том, data
что это объект XML document, и вызывается его toString() .
Комментарии:
1. Отличное объяснение, Пол! На самом деле я думал, что никогда не найду ответ на этот вопрос, потому что в моем случае это происходило только в браузере Firefox (другие браузеры не отображали его, хотя я не указывал тип данных). Должен любить StackOverflow!!!