JQuery在IE中不起作用

时间:2010-09-17 15:04:56

标签: javascript jquery

我更多地寻找“如何排除故障”而不是......答案就是这样。虽然我显然不介意回答。

这是我的JS。

function listFiles(path) {

        document.path = 'dir='+path;

        $.ajax({
            url: "<?php echo site_url("admin/media/get_folder");?>",
            //data: document.path,
            success: function(data) {
                if (data.error) {
                    alert(data.error);
                    return;
                }

                $.each(data, function(key, arr) {
                    $("#files").append(
                        '<a href="#" class="' + arr.type + 
                           ' row">'     + key + '</a>'
                    );
                });
            },
            error: function(e) {
                alert('foo');
            }
        });
        return false;
    }

    listFiles('');

这就是JS的用武之地。

{"files":{"type":"folder","path":"C:\\xampp\\htdocs\\codeigniter\\uploads\\"},
"images":{"type":"folder","path":"C:\\xampp\\htdocs\\codeigniter\\uploads\\"}}

当我在IE9中运行时,我回到了foo。不幸的是我无法找到我的IE8安装,但无论如何都要调试它。

EDIT!

在IE中,以下测试给出以下结果。

alert(arguments[1]) = parsererror. 
alert(e.status + '\n' + e.statusText); = 200 / OK. 

当我将IE源代码中的javascript URL复制到IE浏览器栏中时,url加载正常并提示我下载json文件

编辑编辑

找到原因。

  

无法完成到期的操作   错误c00ce56e

在查看时,我发现了这一点。 http://support.microsoft.com/?scid=kb%3Ben-us%3B304625&x=10&y=13

如何正确编码json文档?

2 个答案:

答案 0 :(得分:2)

我知道它是ASP但结果应该仍然相同。查看此链接http://forums.asp.net/p/1345268/2732795.aspx。尝试将内容类型更改为ISO或其他内容,如果ISO不起作用,请尝试使用UTF-8。 http://api.jquery.com/jQuery.ajax/

答案 1 :(得分:0)

我知道你说你的问题出现在IE中,但是解决ajax问题的最佳方法之一就是使用FireFox及其插件Firebug。这样你就可以查看你的ajax调用的响应,并确切地看到它返回的内容。您很可能在服务器上收到错误,然后您将获得的响应是​​一个错误页面,该页面将被jQuery“隐藏”,您将获得的只是“foo”。

所以下载FireFox并安装FireBug(如果你还没有)并运行程序,然后查看响应。

例如,它可能会说“文件夹不存在”(例如,如果您指定的文件夹不存在)。

如果你在Firefox中得到正确的答案,那么你知道问题出在IE上。

如果您没有得到预期的结果,那么您就知道问题出在服务器端代码或客户端代码中,在这种情况下,Firebug会向您显示正在发生的事情。

其他浏览器中的诊断工具(Chrome,IE):

IE有类似于Firefox的Firebug,但Firebug更精确,更易于使用。它是调试javascript,css以及查看服务器对ajax调用的响应的事实标准。

Google Chrome还提供内置功能(可通过右键单击和检查元素访问)。

实际上,你应该使用所有三个,即使只使用IE,例如,用于内联网应用程序。原因在于,所有这三个都为您提供了不同的诊断工具,以查看请求出了什么问题。

编辑:

我怀疑你的错误是在你传递给$ .ajax调用的url参数中。你正在传递一个php标签(我认为),而不是一个网址。 Firebug会证实或否定这一点。