2015-08-18 117 views
0

我有一個奇怪的問題,使用jQuery和JSON,特別是JSONP。 我的目標是簡單地得到JSON數據,但我總是用下面的錯誤結束:JSON問題(JSONP)

Uncaught SyntaxError: Unexpected token

這裏是代碼:

<script type="text/javascript"> 
    $(document).ready(function() { 
     var myurl = "someurl"; 

    $.ajax({ 
      url: myurl, 
      method: 'GET', 
      contentType: 'application/javascript', 
      dataType : 'jsonp', 
      success: function(result){ 
       //Do something with JSON result 
      } 
    }); 
</script> 

當然的JSON(RAW格式):

{"result":[{"targetView":"powerUsage","myData":{"someItems":["9","5","8"],"someItems2":[{"text":"protoText","currentRecord":"45.38","absolute":100}]}}]} 

我在Google Chrome瀏覽器中使用Advanced Rest Client應用程序嘗試了網絡服務,並且工作正常。我不知道爲什麼這個簡單的例子得到這個語法錯誤信息。

+0

是您的網址看到我在嘗試的jsfiddle你的代碼工作正常:http://jsfiddle.net/repjt/693/ – Zaki

+0

URL本身是不可見上市。 僅供參考:我需要JSONP來避免「訪問控制允許來源」錯誤。 我有可能將我的html文件上傳到網絡服務器並從那裏運行它?我聽說從C:\運行jQuery可能會導致麻煩。 – J0eBl4ck

回答

1

您的Ajax代碼看起來很好。我認爲您正在嘗試進行跨域調用,因爲JSONP是用於處理跨域ajax調用的黑客。如果服務器的代碼,如果準備好處理JSONP請求,那麼您必須發送一個回調參數一樣

?callback=my_callback_method 

比你服務將返回結果有回調見下面的鏈接瞭解詳情:

https://learn.jquery.com/ajax/working-with-jsonp/ 
http://stackoverflow.com/questions/11736431/make-cross-domain-ajax-jsonp-request-with-jquery 
+0

奇怪的是,當我按下「Uncaught SyntaxError:Unexpected token:」消息旁邊的URL時,Google Chrome向我顯示了正確的JSON結果集。是否無法手動覆蓋此錯誤? 像,「好吧,只是給我的數據如此左右」 他明確地獲取正確的數據!正如我所提到的,即使在我的本地計算機上執行它,我的REST客戶端插件也沒有加載這些數據的麻煩。 – J0eBl4ck

+0

正如我所說,你可能試圖連接一個不同的域,這就是爲什麼你會得到這個錯誤,因爲你沒有以正確的方式處理JSONP靜音,無論如何這可能會糾正你的客戶端插件,這是任何豁免。你能分享一下你試圖從ajax打電話的網址嗎? – Yogendra

+0

我設法通過允許不同的域訪問REST服務(CORS服務器設置)來使用普通的JSON。 但是,Google Chrome瀏覽器如何看到好的JSON結果對我來說仍然是一個謎,但它不可能將結果傳遞給我的JavaScript。在舊的C/C++中,我可以訪問機器給我的任何東西。 :p – J0eBl4ck

0

你錯過了把準備就緒的功能關閉,那就是});在腳本標籤關閉前的最後:

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     var myurl = "someurl"; 

     $.ajax(
     { 
     url: myurl, 
     method: 'GET', 
     contentType: 'application/javascript', 
     dataType: 'jsonp', 
     success: function(result) 
     { 
      //Do something with JSON result 
     } 
     }); 
    }); 
</script> 
+0

它被包括在內;)(似乎發佈吃了最後一部分) – J0eBl4ck