2011-03-13 3 views
1

Je rencontre un problème pour faire fonctionner cet appel jQuery.ajax. Lorsque le script s'exécute, j'obtiens une erreur (textStatus = "error"), mais aucun message d'erreur (errorThrown = "").Appels API Kanbanpad (jQuery AJAX)

$.ajax({ 
    type: 'GET', 
    url: 'http://www.kanbanpad.com/api/v1/projects.json', 
    username: '[email protected]', 
    password: 'myAPIkey', 
    dataType: 'json', 
    success: function(data) { 
     alert(data); 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     alert(textStatus+': '+errorThrown); 
    } 
}); 

Si je frappe manuellement l'URL de l'API (ci-dessus) et tapez mes identifiants de connexion, je reçois la réponse JSON appropriée. Donc, je ne suis pas sûr de ce que je fais mal. Mon code est-il mal formé?

Si vous avez besoin de plus d'informations sur l'API, accédez à http://www.kanbanpad.com/api/v1

+0

qu'est-ce que l'objet jqXHR à dire? – DefyGravity

+0

@DefyGravity Je ne sais pas ce que vous demandez, pouvez-vous être plus précis? – therealklanni

+0

dans l'erreur de fonction: fonction (jqXHR, textStatus, errorthrown) { alerte (JSON.stringify (jqXHR));} JSON est de www.json.org. ou juste regarder dans un débogueur js;) – DefyGravity

Répondre

0

Voici le correctif:

Modifier la valeur URL à http://username%40domain.com:[email protected]/api/v1...

Pour une raison quelconque, jQuery (1.5.1, également essayé avec 1.4.4) ne passe pas les username et password paramètres sur le Web serveur correctement (ou pas du tout?), donc plutôt que d'utiliser ces paramètres, il peut s'authentifier en incluant les informations d'identification dans la chaîne URL.

1

Cette page utilise HTTP basic auth mais vous envoyez des messages simplement un nom d'utilisateur/mot de passe dans votre demande. Vous devez configurer correctement les jetons auth et les transmettre dans un en-tête. Voici un simple tutorial on HTTP basic auth over AJAX - Remarquez qu'il existe un exemple spécifique jQuery pour la partie AJAX.

+0

Je ne dis pas que vous avez tort ou quoi que ce soit, je veux juste clarifier. Parce que la documentation d'api.jquery.com indique 'Si le serveur effectue une authentification HTTP avant de fournir une réponse, le nom d'utilisateur et le mot de passe peuvent être envoyés via les options de nom d'utilisateur et de mot de passe.» C'est pourquoi je l'ai fait. Suis-je confondre 2 types différents d'authentification? – therealklanni

+0

Je n'ai jamais remarqué ceux dans l'API avant, et j'ai cru à tort que vous les passiez en tant que paramètres (dans l'option de données). Je m'excuse. – JAAulde