Je crée une application Web qui utilise une API. Le problème est que je n'ai jamais fait de requêtes JSON avec javascript (j'avais l'habitude de travailler avec python). Voici mon code:
{
"ip": "8.8.8.8",
"city": "Mountain View",
"region": "California",
"region_code": "CA",
"country": "US",
"country_code": "US",
"country_code_iso3": "USA",
"country_capital": "Washington",
"country_tld": ".us",
"country_name": "United States",
"continent_code": "NA",
"in_eu": false,
"postal": "Sign up to access",
"latitude": "Sign up to access",
"longitude": "Sign up to access",
"timezone": "America/Los_Angeles",
"utc_offset": "-0700",
"country_calling_code": "+1",
"currency": "USD",
"currency_name": "Dollar",
"languages": "en-US,es-US,haw,fr",
"country_area": 9629091.0,
"country_population": 310232863.0,
"message": "Please message us at ipapi.co/trial for full access",
"asn": "AS15169",
"org": "GOOGLE"
}
Voici le fichier JSON:
<head>
<title>IP finder pro</title>
<script>
function find_ip() {
var ip = document.getElementById('ip_input').value;
fetch('http://ipapi.co/8.8.8.8/json')
.then(response => response.json())
.then(data => alert(data));
}
</script>
</head>
<body>
<input id="ip_input">
<button id="ip_button" onclick="find_ip()">Click !</button>
</body>
Et voici la commande curl:
curl 'https://ipapi.co/8.8.8.8/json/'
Avez-vous une idée de comment je pourrais faire cela?
3 Réponses :
Vous pouvez utiliser l'API fetch pour cela et décoder votre JSON. https://developer.mozilla.org/en-US/ docs / Web / API / Fetch_API / Using_Fetch
fetch('http://example.com/movies.json')
.then(response => response.json())
.then(data => console.log(data));
Je pense que fetch est la meilleure solution. Cependant, vous devez être conscient qu'il n'est pas pris en charge par tous les navigateurs ou par les anciennes versions de ceux-ci. Si vous par exemple besoin de prendre en charge IE merdique, il est probablement préférable d'utiliser une sorte de bibliothèque http-request.
Il me renvoie ceci: [object Object] .
mhh .. C'est bizarre. Pouvez-vous fournir votre mise en œuvre de cet exemple?
Vous pouvez également utiliser Ajax.
function ajax_get(url, callback) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
console.log('responseText:' + xmlhttp.responseText);
try {
var data = JSON.parse(xmlhttp.responseText);
} catch(err) {
console.log(err.message + " in " + xmlhttp.responseText);
return;
}
callback(data);
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
ajax_get('your url', function(data) {
// Do stuff with it -> data["yourvalue"];
});
Essayez cette solution
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var Obj = JSON.parse(this.responseText);
console.log(Obj);
}
};
xmlhttp.open("GET", "your_json_file.json", true);
xmlhttp.send();