2013-07-01 63 views
0

我已經從服務器獲取到瀏覽器的響應JSON數據,但它是迷茫的數據不能在瀏覽器中顯示的,我發現在控制檯中的錯誤告訴我'Uncaught SyntaxError:Unexpected token:'。這是我在節點js中的代碼。的「未捕獲的SyntaxError:意外的標記:」在JSONP

function callFacebook(){ 
$.ajax({ 
    url: "http://192.168.37.179:8888/facebook/connect?callback_=[TIMESTAMP]", 
     type: "GET", 
     dataType: "jsonp", 
     jsonp:"jsonp", 
    cache: true, 
    timeout: 5000, 
    success: function(data) { 
     execute(data); 
    }, 
    error:function() { console.log('Uh Oh!'); } 
}); 

} 這裏是響應JSON數據: res.header('Content-Type','application/json'); res.header('Charset','utf-8'); res.send({"something": "father"});

+0

你可以刪除'?回調_ = [TIMESTAMP]'從您的網址,因爲你指定到jQuery的自動使用JSONP –

+1

腳本意味着你應該送JSONP,不只是JSON – amartynov

+0

@BradM這裏的回調查詢參數不指示自動JSONP(因爲它沒有右側的問號)。 JSONP通過的dataType – amartynov

回答

0

從您發送只是正常的JSON數據的服務器,但在客戶端你期待JSONP。 服務器的響應不是JSONP,瀏覽器會因爲語法錯誤而引發異常。

如果您需要從服務器發送JSONP,那麼如果您正在使用Express附加額外use

app.configure(function() { 
    app.set('jsonp callback', true); 
}); 

然後發送JSONP只是稍微改變res。你不需要設置任何頭了,因爲他們將被自動檢測:

res.jsonp({ hello: 'world' }); 

在客戶端,jQuery將添加回調它的自我,所以只使用這種簡化的方法:

$.ajax({ 
    url: "http://192.168.37.179:8888/facebook/connect", 
    type: 'GET', 
    dataType: 'jsonp', 
    cache: true, 
    timeout: 5000, 
    success: function(data) { 
    console.log(data) 
    }, 
    error: function(xhr, status, error) { 
    console.log('error[' + status + '] jsonp'); 
    } 
}); 

同樣,如果您的節點通過nginx或任何其他Web平臺進行代理,請不要忘記在那裏啓用utf8編碼。

相關問題