0

以下代码在除 IE 之外的所有应用中都非常有用。在 IE 中,警告data.responseText是说未定义。但在所有其他浏览器中,它会返回正确的数据。

我错过了什么?它在 Firefox、Chrome、Safari 等中运行良好。

如果我更改data.responseText为只是数据,我会得到[object Object].

$.ajax({
    type: "POST",
    url: "",
    data: "command=loadComments&id=" + song_id,
    dataType: "html",
    complete: function(data) {
        loading.fadeOut('slow');

        $("#comments-list").fadeIn('slow', function() {
            $("#comments-list").html(data.responseText);
            alert(data.responseText);
        });
    }
});
4

2 回答 2

1

而不是.complete()你可以尝试使用.success()功能。

代码

   success: function(data){
        loading.fadeOut('slow');
        $("#comments-list").fadeIn('slow', function() {
            $("#comments-list").html(data.responseText);
            alert(data.responseText);
        });
    }

来自 jQuery 文档:

成功(数据,文本状态,jqXHR)

请求成功时调用的函数。该函数获得三个参数: 从服务器返回的数据,根据 dataType 参数格式化;描述状态的字符串;和 jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象。

完成(jqXHR,文本状态)

请求完成时要调用的函数(在执行成功和错误回调之后)。该函数获得两个参数:jqXHR(在 jQuery 1.4.x 中,XMLHTTPRequest)对象和一个对请求状态进行分类的字符串(“成功”、“未修改”、“错误”、“超时”、“中止”或“解析器错误”)。

于 2012-06-23T04:02:03.163 回答
1

原因可能是它在successIE 中引发错误。还要添加一个error回调来检查问题所在。例如,文本编码是 AJAX 调用中常见的仅 IE 错误。

于 2012-06-23T04:04:47.977 回答