我更多地寻找“如何排除故障”而不是......答案就是这样。虽然我显然不介意回答。
这是我的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文档?
答案 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会证实或否定这一点。