【发布时间】:2011-12-06 08:31:12
【问题描述】:
我正在使用 $getJSON 从链接中提取 JSON 字符串(例如 /login?user=foo&pass=bar)。当我将此链接直接插入浏览器时,我会收到“文件下载”提示(“这是一个:应用程序/json”)。 getJSON 不适用于该链接。
但是!当我在记事本的“文件下载”提示中打开文件并将该文本作为纯文本(.txt 文件)托管到我的服务器上并在该链接(即 /jsondata.txt)上调用 getJSON 时,它可以完美运行。
请记住,我无法在后端更改任何内容。
知道这里发生了什么吗?基本上,当我将 JSON 文件作为纯文本托管时,我可以将其拉下,但默认情况下不会返回。
编辑 这是我的代码...非常简单:
$.getJSON("http://EXTERNALHOSTNAME.com/WEBSERVICE.svc/login?username="+document.frmLogin.email.value+"&password="+document.frmLogin.password.value+"", function(data) {
alert("it worked!");
});
如果我将该行替换为 .txt 保管箱文件的链接,它会起作用:
//$.getJSON("http://dl.dropbox.com/u/NUMBERS/login.txt", function(data) {
【问题讨论】:
-
你能发布你的getJSON代码吗?
-
我想这已经回答了here
-
“不起作用”是什么意思?你能提供确切的错误吗?该链接是在同一个域上还是在不同的域上(因为我怀疑问题可能出在其他地方)?此外,如果您获得文件下载,则链接可能带有“内容处置”标头support.microsoft.com/kb/260519。我不知道 $.getJson 在这种情况下的表现如何。
-
查看上面的 edit 我不确定抛出了什么错误(我怎样才能找到?)。我只知道,如果我用包含数据的 .txt 文件替换链接,它就可以正常工作。真正的链接本身没有文件扩展名,但(从记事本或写字板的下载提示打开时)显示相同的数据。
-
PPvG,我也试过了(在网上其他地方看到过)。当我放入适当的 URL 并将“{}”放在“数据:”元素旁边时,它会被扔到 AJAX 错误回调中。我在警报窗口中打印 xhr.responseText 并且它是空的。
标签: javascript jquery ajax json