关于jquery.ajax()调用返回的数据的快速问题(EDITED)

时间:2010-04-27 15:28:49

标签: javascript jquery ajax

编辑:最初的问题是由于其他地方出现了一个愚蠢的语法错误,我修复了这个错误。我有一个新问题,如下所述

我有以下jquery.ajax调用:

$.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!这怎么可能呢?之前的函数定义为function convertServiceXmlDataToTable(xml),因此它们不使用相同的变量名。

完全糊涂了。这是一些缓存问题吗?如果是这样,我如何清除浏览器缓存以摆脱早期的XML?

谢谢!

2 个答案:

答案 0 :(得分:1)

查看我的评论。如果您正在使用IE,则会缓存GET AJAX请求。 jQuery可以通过向请求添加随机查询字符串变量来为您解决此问题。只需将您的AJAX调用更改为:

$.ajax({
    type: 'GET',
    url: servicesUrl + "/" + ID + "/tasks",
    cache: false,
    dataType: "xml",
    success : createTaskListTable
});

这将自动添加随机查询字符串,从而阻止浏览器缓存请求。

答案 1 :(得分:0)

尝试内联定义你的回调:

success: function createTaskListTable(data, textStatus, xhr) {
  console.dir(data, textStatus, xhr);
}

如果确实将数据返回为null,您可能会从其他字段中获得一些见解,尤其是xhr。

请注意,使用(xhr,textStatus,errorThrown)调用错误回调。