Javascript 关于jquery.ajax()调用返回的数据的快速问题(已编辑)
编辑:最初的问题是由于其他地方的一个愚蠢的语法错误,我已经修复了这个错误。但我有一个新问题,如下所述 我有以下jquery.ajax调用:Javascript 关于jquery.ajax()调用返回的数据的快速问题(已编辑),javascript,jquery,ajax,Javascript,Jquery,Ajax,编辑:最初的问题是由于其他地方的一个愚蠢的语法错误,我已经修复了这个错误。但我有一个新问题,如下所述 我有以下jquery.ajax调用: $.ajax({ type: 'GET', url: servicesUrl + "/" + ID + "/tasks", dataType: "xml", success : createTaskListTable }); createTaskListTable函数定义为 function createTaskListTa
$.ajax({
type: 'GET',
url: servicesUrl + "/" + ID + "/tasks",
dataType: "xml",
success : createTaskListTable
});
createTaskListTable
函数定义为
function createTaskListTable(taskListXml) {
$(taskListXml).find("Task").each(function(){
alert("Found task")
}); // each task
}
问题是:这不起作用,我得到一个错误,说taskListXml
未定义。JQuery文档指出,成功函数传递了三个参数,第一个是数据
如何使用自己选择的变量名将.ajax()
返回的数据传递给函数
我现在的问题是,我从以前的ajax调用中获取XML!这怎么可能呢?前面的函数定义为函数convertServiceXmlDataToTable(xml)
,因此它们不使用相同的变量名
完全糊涂了。这是缓存问题吗?如果是这样,我如何清除浏览器缓存以去除早期的XML
谢谢 尝试以如下方式内联定义回调:
success: function createTaskListTable(data, textStatus, xhr) {
console.dir(data, textStatus, xhr);
}
如果数据确实返回为null,那么您可能会从其他字段(尤其是xhr)中获得一些见解
请注意,调用错误回调时使用(xhr、textStatus、errorshown)。请参阅我的评论。如果使用IE,GET AJAX请求将被缓存。jQuery可以通过向请求中添加一个随机querystring变量来解决这个问题。只需将AJAX调用更改为:
$.ajax({
type: 'GET',
url: servicesUrl + "/" + ID + "/tasks",
cache: false,
dataType: "xml",
success : createTaskListTable
});
这将自动添加随机查询字符串,从而防止浏览器缓存请求。检查Firebug中的AJAX响应并确保其为有效的XML。如果您获得的数据有效,这应该可以工作。如果未定义
taskListXml
,您不会得到任何错误:函数只会返回而不做任何操作。您到底遇到了什么错误?只是想一想,但是您使用的是什么版本的jQuery,您在bug跟踪系统中看到过与此相关的任何东西吗?对于每个jQuery版本,在每个方法描述下都有一个注释系统,人们有时会使用它来报告bug。可能对您没有帮助,但值得一试……您可以尝试禁用缓存(至少在开发过程中),以确保浏览器不会缓存空响应。只需将“cache:false”添加到选项数组中。