Forum > Klientspråk > JavaScript
Hej.
Jag sitter och leker lite och försöker få ihop ett eget API, mest för att lära mig.
Jag har en model som retunerar en array med användare från min databas. Denna array görs sedan om till ett JSON objekt.
Ni kan se vad som retuneras här: http://api.lpmaxi.se/api/getAllUsers
Det där fungerar, jag får ut det jag vill.
Problemet är i mitt javascript som skall hämta detta JSON-objekt.
Min control:
public function getAllUsers(){
$this->load->model("User_model");
$users = $this->User_model->getAllUsers();
$this->output
->set_content_type('application/json')
->set_output(json_encode($users));
}
function getAllUsers(){
$sql = "SELECT username, email FROM users ORDER BY id DESC";
$result = $this->db->query($sql);
if ($result->num_rows() > 0) {
return $result->result_array();
}
else {
return false;
}
}
Min javascript kod ser ut så här:
$(function() {
$.getJSON( 'http://api.lpmaxi.se/api/getAllUsers', function ( data ) { console.log( data ); } );
});
Jag får detta felet: XMLHttpRequest cannot load http://api.lpmaxi.se/api/getAllUsers. Origin http://linkentuss.se is not allowed by Access-Control-Allow-Origin.
Min html sida med javascript koden finns här: http://www.linkentuss.se/api.html
Jag har lagt dom på olika domäner bara för att se om det funkar.
Vad gör jag för fel? Hur löser jag det? Det kanske är PHP-koden som retunerar JSON-objektet fel på något sätt? Eller måste jag göra något annat för att kunna hämta saker på detta viset? Hur gör tex andra sidor med API:er där man anropar en URL och får tillbaka en JSON?
Som sagt, detta är bara lite test för att lära mig, jag vet att man skall göra en massa säkerhetstester med mera, men det kommer jag till.
Om du inte kör JSONP på din server så kommer du inte kunna köra AJAX anrop från en annan domän än din egna.
Det där har med stor sannolikhet med den förhöjda säkerheten på webservern, dvs skydd mot Cross-Site-Scripting, det ser du på texten "Access-Control-Allow-Origin".
Du kan läsa mer om "Access-Control-Allow-Origin" och kringliggande info här (rekommenderas): https://developer.mozilla.org/en/HT..._access_control
För att lösa problemet så tror jag att du hittar lösningen här: https://developer.mozilla.org/En/Se..._Access_Control
Tack för informationen, ska titta mer på det efter USA-resan.