2017-04-06 28 views
1

爲什麼當我命名回調函數時jquery不執行函數?

$.getJSON("http://ip.jsontest.com/?callback=showMyIP"),function(){ 
    console.log("test");} 

開發工具表明,我得到一個正確的JSON

showMyIP({"ip": "84.113.30.7"}); 

,但他簡單忽略了以下功能

如果我更換showMyIP?並使其失效。

另外我還有另一個json,它是100%正確的,其中jquery拒絕運行匿名函數,儘管得到一個正確的json回包裹在anony。函數,在調試中我得到一個失蹤;對某些對象完全沒有意義,因爲沒有;在jsons中使用。

回答

1

你有兩個問題。首先,代碼中會有一個隨機),導致語法錯誤。

其次,$.getJSON需要JSON響應,而不是JSONP。做你想要使用$.ajax()什麼,並設置正確的dataType

$.ajax({ 
 
    url: 'http://ip.jsontest.com/', 
 
    dataType: 'jsonp', 
 
    jsonpCallback: 'showMyIP', 
 
    success: function(data) { 
 
    console.log(data); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

隨機)只是一個複製錯誤。與阿賈克斯它的作品,但它仍然沒有工作我的其他JSON。他收到一個正確的jsonp,至少json lint說可以。任何想法,爲什麼它不會工作? – Moorli

+0

這可能是由於CORS問題。很難在沒有看到代碼的情況下給出明確的答案。 –

+0

這是當我通過瀏覽器[{「id」:「vital_data」,「name」:「Vital Data」,「timestamp」:「2016-02-02_10:31」,「diastolic_pressure 「:」800「,」systolic_pressure「:」120「,」heart_rate「:」60「,」pressure_unit「:」mm Hg「,」heart_rate_unit「:」bpm「}]和開發工具顯示正確的響應。 – Moorli