所以我试图通过 AJAX 获取 XML 并将其传递给函数。现在,我对异步JavaScript和XML 一无所知,除了我在互联网上的某个地方阅读的小jQuery.ajax()
教程。我所知道的是 AJAX 为我获取了 XML 并为我提供了一个名为success
的回调函数作为ajaxSettings
的属性,我可以在哪里处理XML数据 - 它是相关的 - 使用jQuery函数。
所以,这是一种可能的情况。
// Inside $.ready()...
$.ajax({
type: 'GET',
dataType: 'xml',
url: 'res/xml/data.xml',
success: function(xmlDoc) {
$('#elements').processData(xmlDoc); // In scope, of course...
}
});
现在,这是我在success(xmlDoc)
$.fn.processData = function(args) {
// TODO: ________
}
TODO:检查args是否为有效的XML。现在,正如我之前提到的,xmlDoc
可以使用jQuery函数进行处理,这意味着它已经是一个jQuery对象,这意味着jQuery(或jQuery.ajax
)已经确定它是有效的XML,或者是吗?如果没有,如何确保它是有效的XML,或者至少只是XML?
我还有其他一些偏离主题的事情要提及和/或在这里询问。
即使我没有开发合适的插件,扩展$.fn
也是个好主意吗?
大多数jQuery函数都被重载,例如$('#toTheseElements').doSomething( withTheseArgs )
与$.doSomething( $('#toTheseElements'), withTheseArgs )
一样有效。他们是怎么做到的?这是一件好事吗?如果我想这样做,我该怎么做呢?我查看了互联网,发现了许多解决方案,但大多数只是黑客攻击。是否有最优(优雅)的解决方案?
如果我想将其他证券添加到processData(args)
怎么办?例如,检查已调用processData(args)
的元素是否是某种类型的(所有)元素?我知道$.is('elementType')
,但即使只是elementType
类型的一个元素,它也会返回true。我可以$.each()
但如果遇到不属于return
类型的元素,我就无法elementType
。
AJAX是异步的,使用xmlDoc
作为success()
函数内另一个函数的参数是否安全?我对同步或异步函数了解不多,但几天前我遇到了另一个异步函数,并一直想知道为什么它一直在返回空变量*并最终在互联网上愚弄自己...所以,我应该害怕异步?
off-topic 问题确实是偏离主题的,因此这意味着您可以选择忽略它们,我根本不介意。 Cheerio!