2017-03-16 39 views
0

我有一個簡單的Ajax請求:如何在jquery中請求https api?

$.ajax({url: 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=stuff&callback=JSON_CALLBACK',success: function(data){ 
console.log(data); 
}}); 

當我手動打開鏈接,我得到了我想要的對象,而不是通過一個Ajax請求。事情是,如果api地址是http,它就可以工作。可以這樣告訴我爲什麼是這樣以及我如何解決它?

+0

這應該是'$ .get' –

回答

0

您可以輕鬆地get管理:https://api.jquery.com/jquery.get/

$.get("https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=stuff&callback=JSON_CALLBACK", function(data) { 
    console.log(data); 
}); 
+1

如果你嘗試這個,你會在控制檯中看到一個'No Access Control header'錯誤 –

0

首先你應該發送GET請求,而不是一個POST。然而更大的問題是您需要檢索JSONP數據,而不是JSON。

要做到這一點,你可以使用$.ajax()與適當的設置:

$.ajax({ 
 
    url: 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=stuff', 
 
    dataType: 'jsonp', 
 
    jsonpCallback: 'JSON_CALLBACK', 
 
    success: function(data) { 
 
    console.log(data); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

你需要記住指定要使用JSONP。

$.ajax({ 
 
\t url: 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=stuff&callback=?', 
 
\t success: function(data){ 
 
\t \t console.log(data); 
 
\t }, 
 
\t dataType: 'jsonp', 
 
     jsonpCallback: 'JSON_CALLBACK' 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

嘗試增加 'JSONP' 作爲數據類型的選項,你的Ajax設置,喜歡這裏:

$.ajax({ 
 
    url: 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search& gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=stuff&callback=JSON_CALLBACK', 
 
    dataType: 'jsonp', 
 
    success: function(data){ 
 
    console.log(data); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>

編輯:你要清楚,你也可以使用$ get,但它只是一個簡寫版本:

$.ajax({ 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 

$ AJAX是使用 'GET' 作爲默認請求方法。