#ajax #jquery #load
#ajax #jquery #загрузка
Вопрос:
Я загружаю параметры для нескольких списков выбора, используя load и fragment.
Это то, что у меня есть:
$(document).ready(function(){
$("#select1").load("ts.xml #select1",
function (responseText, textStatus, XMLHttpRequest) {
if (textStatus == "success") {
alert("Loaded select 1");
}
$("#select2").load("ts.xml #select2",
function (responseText, textStatus, XMLHttpRequest) {
if (textStatus == "success") {
alert("Loaded select 2");
}
});
И мой html выглядит так:
<li id="select1" class="left"></li>
<li id="select2" class="left"></li>
где ts.xml выглядит примерно так:
<select id="select1">
<option>Lorem</option>
<option>Ipsum</option>
<option>Lorem Ipsum</option>
</select>
<select id="select2">
<option>Lorem</option>
<option>Ipsum</option>
<option>Lorem Ipsum</option>
</select>
Как я могу загрузить ts.xml один раз и продолжать извлекать из него фрагмент?Обратите внимание, что каждый раз, когда я извлекаю фрагмент, я хочу предупредить об успехе не на ts.xml нагрузка.
Большое спасибо
Ответ №1:
Загружайте один раз, кэшируйте, затем используйте кэшированную версию:
$(document).ready(function(){
var response;
$("#select1").load("ts.xml #select1",
function (responseText, textStatus, XMLHttpRequest) {
if (textStatus == "success") {
response = responseText; // this will be your xml response
// now you can use 'response' anywhere inside the doc.ready function
}
});
});
Комментарии:
1. Не могли бы вы показать мне, как я могу вспомнить для select2 с «ответом» в качестве XML-кэша? Я понял концепцию этого, но я не знаю, как это сделать, поэтому я задал вопрос. Большое спасибо
2. ответ @adeneo был бы способом сделать это. Если вы преобразуете
response
в объект jQuery ( response = $(responseText)), то вы можете использовать методы jQuery для его синтаксического анализа. Итак, когда вам нужно заполнить #select2, вы просто беретеresponse
переменную и манипулируете ею таким образом.
Ответ №2:
Я думаю, я бы, вероятно, вернулся к базовой функции $ .ajax и сделал что-то вроде этого.
var xmlData;
function getXML() {
$.ajax({
type: "GET",
url: "ts.xml",
dataType: "xml",
error: function() {
$("#mydiv").append("<p>File Not Found!</p><br />");
},
success: function(xml){
xmlData = $(xml);
}
});
Теперь вы можете искать данные где угодно, по крайней мере, я так думаю, не проверял, но не понимаю, почему нет?
var Searchvalue = "Lorem";
xmlData.find("select1").find("option:contains('" Searchvalue "')").each(function(){
// do something
});