我陷入了困境。我希望有人可以提供帮助。
基本上,我正在使用jQuery构建一个AJAX移动Web应用程序。我能够很好地解析特定的XML文件,但是我希望该选项能够根据点击的链接解析其他XML文件,并将它们即时加载到同一个DIV或UL中。
所以:
点击Link1,加载XML1
单击Link2,加载XML2
我希望能够在所有客户端执行此操作,因此没有PHP(或者这是个坏主意?)。这是我一直在使用的jquery代码:
$(document).ready(function() {
$("a.load_ajax").click(loadAjax());
function loadAjax() {
var fileID = get('?lineID=');
var dataID = "xml/" + fileID + ".xml"
$.ajax({
type: "GET",
url: dataID,
dataType: "xml",
success: parseXml
});
function parseXml(xml) {
$(xml).find("train").each(function() {
$("ul#ajax-output").append('<li>' + $(this).find("time").text() + '</li>');
});
}
}
});
它根本就不起作用。我一直在使用网址中的GET传递变量。因此,HTML中的链接转到/?lineID = SBD_to_Union,它应该加载名为SBD_to_Union.xml的XML文件
对任何人都有意义吗?我很感激一些帮助。
答案 0 :(得分:1)
您似乎正在努力的是从锚点中的网址获取行。使用$(this)获取所点击链接的href属性。然后,如果url如上所述,您可以使用正则表达式删除除用于构造XML链接的行ID之外的所有内容。我假设XML是服务器端并且相对于当前url。如果没有,那么你需要调整路径。我已经冒昧地通过将函数内联来压缩一些东西。 修改:并且点击处理程序应返回false以防止链接实际执行其默认操作。
$(function() {
$("a.load_ajax").click( function() {
var fileID = $(this).attr('href').replace(/.*?lineID=/,'');
var dataID = "xml/" + fileID + ".xml"
$.ajax({
type: "GET",
url: dataID,
dataType: "xml",
success: function(xml) {
$(xml).find("train").each(function() {
$("ul#ajax-output").append('<li>' + $(this).find("time").text() + '</li>');
});
}
});
return false;
});
});
答案 1 :(得分:1)
您是否检查过get
函数是否返回了正确的数据?
在alert(fileID);
行之后添加get(..);
..
但是为什么不创建直接指向xml文件的url而不是动态解析和创建url?
只需将html中的链接指向xml/SBD_to_Union.xml
答案 2 :(得分:1)
乍一看,我认为你的ajax()语法稍微偏离了。
您是否因特殊原因使用查询字符串?如果不是,我会尝试为HTML链接提供您尝试获取的XML文件的绝对URL:
<a href="xml/file123.xml"></a>
然后试试这个:
$("a.load_ajax").click(function(e) {
e.preventDefault();
var url = $(this).attr('href');
$.ajax({
type: 'GET',
url: url,
dataType: 'xml',
success: function(response) {
$(response).find('train').each(function() {
$('ul#ajax-output').append('<li>' + $(this).find('time').text() + '</li>');
}
});
});
我没有测试过这个,但它应该做你想要的。
答案 3 :(得分:0)
<a href="#" id="link1" class="load_ajax">Link1</a>
<a href="#" id="link2" class="load_ajax">Link2</a>
您可以根据href的id(或其属性或其href值)执行操作。
$(function() {
$("a.load_ajax").click(loadAjax);
});
function loadAjax()
{
if ($(this).attr("id") == "link1")
{
alert("link1"); //load xml1
}
else
{
alert("link2"); //load xml2
};
}