2013-01-21 72 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