Javascript getJSON只响应纯文本,否则将无法工作?
我使用$getJSON从链接中下拉JSON字符串(例如/login?user=foo&pass=bar)。当我将此链接直接插入浏览器时,会得到一个“文件下载”提示(“这是一个:application/json”)。getJSON在该链接上不起作用 然而!当我在记事本的“file download”提示符下打开文件,将该文本作为纯文本(.txt文件)保存到服务器上,并在该链接上调用getJSON(即/jsondata.txt)时,它工作得非常好 请记住,我没有能力更改后端的任何内容 知道这是怎么回事吗?基本上,当我将JSON文件作为纯文本宿主时,我可以将其下拉,但默认情况下不会返回 编辑 这是我的代码…非常简单:Javascript getJSON只响应纯文本,否则将无法工作?,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我使用$getJSON从链接中下拉JSON字符串(例如/login?user=foo&pass=bar)。当我将此链接直接插入浏览器时,会得到一个“文件下载”提示(“这是一个:application/json”)。getJSON在该链接上不起作用 然而!当我在记事本的“file download”提示符下打开文件,将该文本作为纯文本(.txt文件)保存到服务器上,并在该链接上调用getJSON(即/jsondata.txt)时,它工作得非常好 请记住,我没有能力更改后端的任何内容 知道这是怎么回
$.getJSON("http://EXTERNALHOSTNAME.com/WEBSERVICE.svc/login?username="+document.frmLogin.email.value+"&password="+document.frmLogin.password.value+"", function(data) {
alert("it worked!");
});
如果我将该行替换为指向dropbox.txt文件的链接,它将起作用:
//$.getJSON("http://dl.dropbox.com/u/NUMBERS/login.txt", function(data) {
您不能从javascript调用其他域(原始域除外)。如果
EXTERNALHOSTNAME
支持jsonp响应,则可以通过将回调=?
加载到查询中来解决问题。如果没有,您可以在服务器上放置一个脚本,该脚本将路由该响应,使其看起来像是来自您自己的域。除此之外,如果您可以提供来自EXTERNALHOSTNAME
(我对此表示怀疑)的页面,那么您可以提供来自该域的执行此ajax调用的iframe(这样它就不会违反相同的源代码规则),然后将该数据走私到父帧。您可以发布您的getJSON代码吗?我想这已经得到了回答,您的意思是什么“不工作”?您能提供确切的错误吗?该链接是在同一个域上还是在另一个域上(因为我怀疑问题可能在其他地方)?此外,如果您下载了一个文件,则链接可能带有“content disposition”标题。我不知道$.getJson在这种情况下的行为。请参阅上面的编辑,我不确定抛出了什么错误(我如何找到?)。我只知道,如果我用包含数据的.txt文件替换链接,它就可以正常工作。真正的链接本身没有文件扩展名,但(从记事本或写字板的下载提示打开时)会显示相同的数据。PPvG,我也尝试过(在网上的其他地方看到过)。当我放入适当的URL并放入“{}在'data:'元素旁边,它被抛出到AJAX错误回调中。我在警报窗口中打印xhr.responseText,它是空的。