getJSON只响应明文,否则不起作用

getJSON only responds to plaintext and will not work otherwise?

本文关键字:不起作用 明文 响应 getJSON      更新时间:2023-09-26

我使用$getJSON从链接(例如/login?user=foo&pass=bar)中拉下JSON字符串。当我把这个链接直接插入浏览器时,我得到一个"文件下载"提示("这是一个:application/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!");
});

如果我用一个dropbox .txt文件的链接来替换那一行,它可以工作:

//$.getJSON("http://dl.dropbox.com/u/NUMBERS/login.txt", function(data) {

你不能从javascript调用其他域(除了原始域)。如果EXTERNALHOSTNAME支持json响应,则可以通过将&callback=?添加到查询中来解决问题。如果不是,您可以在服务器上放置一个脚本来路由该响应,这样它就会显示为来自您自己的域。除此之外,如果您可以从EXTERNALHOSTNAME(我怀疑)提供页面,您可以从执行此ajax调用的域提供iframe(以便它不违反同源规则),然后将该数据走私到父框架。