2012-02-01 35 views
2

嗨我想從API獲取數據。跨域JSONP請求返回未捕獲的SyntaxError:意外的令牌:

我使用Ajax調用但我總是得到一個錯誤信息 未捕獲的SyntaxError:意外的標記:

誰能給我如何做一個正確的JSONP調用的例子。

下面是我的代碼片段。我正在使用coffeescript

get_shipping:=> 
    shipper_id = @datapayload['general'][0]['shipper'] 
    origin = @datapayload['general'][0]['origin'] 
    destination = @datapayload['general'][0]['destination'] 
    if shipper_id == '001' 
     expedition = 2 
    if shipper_id == '002' 
     expedition = 1 
    if shipper_id == '003' 
     expedition = 5 
    if shipper_id == '004' 
     expedition = 6 
    api_code = 'my_api_code' 
    @url = 'http://www.ongkoskirim.com/api/0.2/?id=' + api_code + '&o=' + origin + '&d=' + destination + '&c=' + expedition + '&callback=jsonhandler' 
    $.getJSON @url, (data)=> 
     alert jsonhandler 
    $.ajax(
     url:@url 
     headers:{'Access-Control-Allow-Origin': '*'} 
     crossDomain: 'true' 
     type:'GET' 
     dataType:'jsonp' 
     jsonpCallback:'jsonhandler' 
     success:(data)=> 
     console.log data 
     error:=> 
     console.log "error" 
    ) 

任何幫助表示讚賞。 Thx

+0

什麼是整個錯誤信息?是'$ .getJSON'還是'$ .ajax'造成麻煩? – 2012-02-01 01:42:24

+0

都造成問題 – EmFeld 2012-02-01 02:38:31

+0

而錯誤信息是...... – 2012-02-01 04:30:44

回答

1

你的JSON是什麼樣的?聽起來像是格式不正確。驗證它here

另外用jQuery的$.getJSON你不需要指定回調函數,它會爲你生成一個隨機名稱,並且你可以像正常一樣使用success()回調函數。

+0

我已經嘗試使用$ .getJSON,但它仍然會返回一條錯誤消息。 json來自第三方網站的API,我已經驗證過它 – EmFeld 2012-02-01 02:37:44

0

使用$ .getJSON URL字符串,追加'?callback = dummyDummy',其中dummyDummy是將用作回調函數名稱的任何字符串值;你不需要在其他地方定義dummyDummy。我已經成功測試過的jQuery版本是1.5.1。

相關問題