2013-01-21 33 views
11

调用REST API我有一个网址,这给JSON数据...如何从javascript

我想打那个URL从JavaScript,但我收到此错误:

纯文本的字符编码文件没有被宣布。如果文档包含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> 
+0

错误出现在哪里? – Quentin

+0

在这个js中:jquery-1.7.1.min.js – Rishi

+0

这更多的是由文档解释你的请求所设置的字符编码问题。谁来控制服务器端代码? –

回答

10

你的代码看起来正确。

您是否在制作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> 

参考:wikipedia

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

+0

你的意思是我必须使用url作为var url = url +“?callback =?” 我已经使用过..我没有找到任何结果.... – Rishi

+0

号您可以发布“url”的全部值 – Wolf

+0

url =“http://www.scalajobz.com/getAllJobs?callback=? “ – Rishi