11

我有一个提供 json 数据的 url...

我想从 javascript 中访问该 URL,但出现此错误:

未声明纯文本文档的字符编码。如果文档包含 US-ASCII 范围之外的字符,则文档将在某些浏览器配置中呈现乱码。文件的字符编码需要在传输协议中声明或者文件需要使用字节序标记作为编码签名

代码 :

function a(){
$.getJSON(url,function(data) { alert(data);});
}

完整代码:

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" ></meta>
<script language="JavaScript" type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script>

function a(){
$.getJSON(url,function(data) { alert(data);});
}
</script>
</head>
<body>
<input type="text"/>
<input type="submit" value="search" onclick="a()"/>
</body>
</html>
4

1 回答 1

11

您的代码似乎正确。

你在做一个fully qualified URL call吗?

如果您要进行完全限定的 URL 调用,请确保以下内容。

  1. 您正在调用相同的域(相同的服务器)。您不能对另一个域进行简单的 JSON 调用。
  2. 如果要使用跨域调用,则必须使用 JSONp

更新: 这是行不通的,因为它是跨域调用。

解决这个问题

JavaScript

创建一个函数

function getMyData(data) {
    alert(data);
    //Do the magic with your data
}

服务器端

在服务器端将数据包装在函数语法中

getMyData("Enter your data here");

JavaScript

然后创建一个脚本标签并添加一个链接到你的跨域页面

 <script type="text/javascript"
         src="cross ref url">
 </script>

供参考:维基百科

编辑:另一个选项是在您的域上创建代理。即在您的域中创建一个页面,该页面在内部调用跨域页面并将相同的数据返回给您的Ajax 调用。

于 2013-01-21T06:34:56.270 回答