web-dev-qa-db-fra.com

ajax jquery simple obtenir demande

Je fais cette simple requête get en utilisant jquery ajax:

$.ajax({
    url: "https://app.asana.com/-/api/0.1/workspaces/",
    type: 'GET',
    success: function(res) {
        console.log(res);
        alert(res);
    }
});

En conséquence, il renvoie une chaîne vide. Si je vais à ce lien dans mon navigateur, je reçois:

{"status":401,"error":"Not Authorized"}

quel est le résultat attendu. Alors, pourquoi ne fonctionne-t-il pas avec ajax? Merci!

11
0xSina

Il me semble qu’il s’agit d’une question interdomaine, car vous n’êtes pas autorisé à demander des informations à un autre domaine. 

Vous avez des solutions à ce problème: - Utilisez un script proxy s'exécutant sur votre serveur qui transmettra votre demande et traitera la réponse en l'envoyant au navigateur Ou - Le service que vous rendez demande doit avoir le support JSONP. C'est une technique interdomaine. Vous voudrez peut-être lire ceci http://en.wikipedia.org/wiki/JSONP

7
Joao Almeida
var dataString = "flag=fetchmediaaudio&id="+id;

$.ajax
({
  type: "POST",
  url: "ajax.php",
  data: dataString,
  success: function(html)
  {
     alert(html);
  }
});
5
user3070157

Vous pouvez envoyer des requêtes AJAX aux applications chargées à partir du même domaine et du même port.

En outre, vous devez ajouter dataType JSON si vous souhaitez que le résultat soit désérialisé automatiquement.

$.ajax({
        url: "https://app.asana.com/-/api/0.1/workspaces/",
        type: 'GET',
        dataType: 'json', // added data type
        success: function(res) {
            console.log(res);
            alert(res);
        }
    });

http://api.jquery.com/jQuery.ajax/

1
Stelian Matei

je pense que le problème est qu'il n'y a pas de données dans la fonction de succès, car la requête rompt avec une erreur 401 dans votre cas et n'a donc aucun succès.

si tu utilises 

$.ajax({
        url: "https://app.asana.com/-/api/0.1/workspaces/",
        type: 'GET',
         error: function (xhr, ajaxOptions, thrownError) {
    alert(xhr.status);
    alert(thrownError);
  }
    });

il y aura votre code 401 je pense ( ce lien le dit)

1
Matthew Fisher
var settings = {
        "async": true,
        "crossDomain": true,
        "url": "<your URL Here>",
        "method": "GET",
        "headers": {
            "content-type": "application/x-www-form-urlencoded"
        },
        "data": {
            "username": "[email protected]",
            "password": "12345678"
        }
    }

    $.ajax(settings).done(function (response) {
        console.log(response);
    });
0
PK-1825