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

时间:2011-10-12 17:49:19

标签: javascript jquery ajax json

我使用$ getJSON从链接中下拉JSON字符串(例如/ login?user = foo& pass = bar)。当我将这个链接直接插入浏览器时,我得到一个“文件下载”提示符(“这是一个:application / json”)。 getJSON不适用于该链接。

然而!当我在记事本的“文件下载”提示中打开文件并将该文本作为纯文本(.txt文件)托管到我的服务器上并在THAT链接上调用getJSON(即/jsondata.txt)时,它运行正常。

请记住,我无法在后端更改任何内容。

知道这里发生了什么吗?基本上,当我将它作为纯文本托管时,我可以下拉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) {

1 个答案:

答案 0 :(得分:0)

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