尝试将值从xml显示到表单。这是一个唯一的HTML页面。
例如,
config.xml有<xml><name>abc</name>....</xml>
和html表单有<form><input id="name"></form>
这样做,我试图使用ajax()或get()函数获取config.xml的内容 然后解析xml然后在html表单上显示这些值。
$(function () {
var content;
$.ajax('config.xml', {
dataType: 'text',
success: function (data) {
content = data;
alert(data);
}
});
});
var $inputs = $('#report_form :input');
$inputs.each(function (index) {
var inputid = $(this).attr('id');
alert(inputid);
alert(content);
var xml = content,
xmlDoc = $.parseXML(xml),
$xml = $(xmlDoc),
$title = $xml.find(inputid);
alert($title.text());
text = $title.text();
$('#' + inputid).val(text);
});
我试过
$.get("config.xml", function(data) {
xml = data;
alert(xml);//Do stuff with data here
});
代替$ .ajax(); 现在我的疑问是在执行$ .get()/ $时,ajax()仅在xml解析器之后执行。
如何在xml解析之前执行$ .get()/ $。ajax()。
答案 0 :(得分:2)
将您的代码放在回调函数中..以便在检索数据时执行
$.get("config.xml", function(data) {
// what ever here will be executed after the data has returned
xml = data;
alert(xml);//Do stuff with data here
$inputs.each(function (index)
{
var inputid=$(this).attr('id');alert(inputid);
alert(content);
var xml = content,
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc ),
$title = $xml.find(inputid);
alert($title.text());
text=$title.text();
$('#'+inputid).val(text);
});
});
答案 1 :(得分:0)
Ajax调用不会直接响应。但是当它发生时,代码将在它的回调函数内部执行(在你的情况下为success
)。
正如setTimeout
将运行回调而不是暂停代码。
setTimeout(function {alert("hello")}, 500);
alert("I will run before timeout!");
您必须将代码放在success
回调中。在ajax成功发送和检索数据之前,将运行此外的其他代码。
$.get("config.xml", function(data) {
$inputs.each(function (index) {
// The code is now placed inside the callback and will be successfully ran when ajax has completed.
var inputid = $(this).attr('id');
var xmlDoc = $.parseXML(data);
var text = $(xmlDoc).find(inputid).text();
$('#'+inputid).val(text);
});
});