/ / Ajax GET żądanie zawsze kończy się niepowodzeniem - javascript, jquery, ajax

Żądanie Ajax GET zawsze kończy się niepowodzeniem - javascript, jquery, ajax

Próbuję połączyć się z serwerem i uzyskać Json, który zawiera identyfikator, którego potrzebuję. Żądanie kończy się niepowodzeniem za każdym razem. Jestem nowy w javascript i nie mogę zrozumieć, na czym polega problem.

$(document).ready(function(){

$.ajax({
type: "GET",
url: "http://www.dais.unive.it/~cosmo/esercitazione3/captcha.php?getIdentifier",
timeout: 2000
}).done(function(data){
var obj = JSON.parse(data);
var session_id = obj.id;
$("#test").append("Session id: "+ session_id + "<br/>");

}).fail(function(){
alert("Error");
});
});

Odpowiedzi:

0 dla odpowiedzi № 1

Użyj poniższego kodu, po prostu dodaj typ danych jsonp

$(document).ready(function(){

$.ajax({
url: "http://www.dais.unive.it/~cosmo/esercitazione3/captcha.php?getIdentifier",
dataType: "jsonp",
success: function (response) {
console.log(response.id);
var session_id=response.id;

},
error: function (jqXHR, exception) {
console.log("FAILURE");

},
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


0 dla odpowiedzi nr 2

Twój problem polega na tym, że nie masz uprawnień do pobierania danych z tego serwera z powodu polityka tego samego pochodzenia zaimplementowane we wszystkich przeglądarkach internetowych.

Tutaj masz dwa rozwiązania:

  1. JSONP (JSON z wypełnieniem)
  2. CORS (udostępnianie zasobów między różnymi źródłami)

Ponieważ próbujesz uzyskać dostęp do adresu URL ze strony internetowejTwój uniwersytet, myślę, że nie jesteś administratorem systemu. Dlatego nie można używać CORS opartego na nagłówkach HTTP, które wymagają pewnej konfiguracji po stronie serwera.

Powinieneś jednak móc korzystać z JSONP. Dzięki jQuery jest to bardzo łatwe: https://learn.jquery.com/ajax/working-with-jsonp/