#jquery #ajax
#jquery #ajax
Вопрос:
Я использую современный запрос jquery 1.5 ajax. На страницу в том же домене. Я пытаюсь улучшить поведение на сайте интрасети, используя grease monkey и jquery.
var jqxhr = $.ajax("anotherpage-response.html")
.success(function(data) {alert("cmp"); console.log(data);})
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
В настоящее время он возвращается в виде строки. Есть идеи, как я могу вернуть его в виде dom-подобного объекта, который я могу обработать с помощью селекторов jquery???
Я думаю, что мне нужно что-то вроде fileType: html
но, похоже, это не опция в запросе ajax. Может быть, мне просто нужно правильно прочитать api???
Спасибо
Комментарии:
1. Просто передать
data
в jQuery?$(data)
2. Кстати. вариант мог бы быть
dataType
, но в документации сказано: Возвращает HTML в виде обычного текста , так что, я думаю, это не поможет.
Ответ №1:
Вам следует ознакомиться с документацией jquery по этому вопросу: http://api.jquery.com/jQuery.ajax / Вероятно, вы ищете следующее: тип данных.
$.ajax({
url: 'request.html',
succes: function(data){
.. do something here! ..
},
dataType: 'html'
});
Я надеюсь, что это поможет
Комментарии:
1. Работает ли это? В документации сказано: Возвращает HTML в виде обычного текста . Вы пробовали это?
2. В основном это задает заголовки для возвращаемого значения. Затем вы можете использовать $ (данные) для создания из него объекта jquery. Но это не действует как обычное тело. Вы можете использовать data.find(‘body’) для поиска этого объекта и манипулирования им. Вы должны обойти эту проблему, и jquery серьезно нуждается в принятии некоторых мер по этому поводу. Если вам нужно проделать много манипуляций, рассмотрите возможность возврата json-объекта и построения html с помощью javascript
3. Тогда я должен сказать, что ваш ответ вводит в заблуждение. Похоже, вы предлагаете использовать
dataType: 'html'
, и это должно сработать. Но добавление этого не улучшает ситуацию и оставляет OP по-прежнему там, где он есть сейчас …. не обязательно полезно.
Ответ №2:
Независимо от того, что вы получите обратно строку в виде обычного текста.
Из документов jQuery по типу данных:
«»html»: возвращает HTML в виде обычного текста; включенные теги скрипта оцениваются при вставке в DOM».
Однако вы всегда можете превратить открытый текст в объект dom..
$.ajax({
url: 'request.html',
succes: function(data){
$(data) // This is now (kind of) a DOM object that you can use jQuery selectors on
},
dataType: 'html'
});
Ответ №3:
В jQuery 1.4 и ниже вы могли бы указать тип содержимого, передав dataType
. В более поздних версиях jQuery пытается определить тип содержимого для вас.
Попробуйте что-то вроде этого:
$.ajax({
url: "anotherpage-response.html",
success: function(response, status, xhr){
var ct = xhr.getResponseHeader("content-type") || "";
if (ct.indexOf(‘html’) > -1) {
//handle html content
}
else if (ct.indexOf(‘json’) > -1) {
//handle json object
}
}
});