У меня есть следующий xml:
<?xml version="1.0" encoding="utf-8"?>
<Area xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Scenes>
<Scene Index="1" Name="Scene1" />
<Scene Index="2" Name="Scene2" />
</Scenes>
</Area>
Который я пытаюсь проанализировать с jQuery:
<script>
$(document).ready(function(){
$.ajax({
type: "GET",
url: "list.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('scenes').each(function(){
$(this).find('scene').each(function(){
var name = $(this).attr('name');
$('<div class="items" ></div>').html('<p>'+name+'</p>').appendTo('#page-wrap');
});
});
}
});
});
</script>
Почему это не работает?На помощь!! первая попытка javascript/jquery, Это основано на примере, который я нашел, но до сих пор не могли адаптировать его к моему использованию. / Lars
Этот код работает для меня в Safari и (что удивительно) Firefox:
$.ajax({
type: "GET",
url: "list.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('Scenes').each(function(){
$(this).find('Scene').each(function(){
var name = $(this).attr('Name');
$('<div class="items" ></div>').html('<p>'+name+'</p>').appendTo('#page-wrap');
});
});
},
error:function(a,b,c) { console.log( c ) }
});
Причина, по которой он не работает не работает в некоторых браузерах, вероятно, из-за того, что вы размещаете в файловой системе (при условии, что это так). Chrome и Firefox, как правило, создают проблемы при доступе к файловой системе через запрос AJAX из-за одинаковой политики происхождения.
С javascript все в порядке. Вы либо получаете пустой ответ, либо ошибку.
Этот вопрос может быть применимым:
Проблемы с jQuery getJSON с использованием локальных файлов в Chrome
Попробуйте изменить это:
$('<div class="items" ></div>')
на это:
$('.items')
Попробуйте запустить код из консоли браузера, а не когда документ готов. Это позволит вам выполнять итерации намного быстрее. Для начала попробуйте FireBug в Firefox. Я нахожу, что консоль FB намного проще в использовании при отладке сложных действий, чем то, что вы получаете в браузере на базе Webkit.
Вы также можете попробовать добавить error
и complete
функции обратного вызова в вызов $.ajax()
.
$.ajax({
// ...
error: function (req, err_type, ex) { console.log("error..."); },
complete: function (req, status) { console.log("complete..."); }
});
Вы также можете попробовать добавить несколько предупреждений или console.logs в обработчик успеха. Достаточно, чтобы убедиться, что он вызывается и получает результат xml, который вы ожидаете получить.