2017-08-10 1 views
1

Tout d'abord je me connecte avec succès et un cookie défini par serveur dans mon navigateur en utilisant extrait suivant:Obtention de l'erreur lors de l'envoi demande jqueryAjax

var form = new FormData(); 
form.append("email", "[email protected]"); 
form.append("pword", "pass123"); 
form.append("geo", "6.4636835,3.8494566"); 

var settings = { 
    async: true, 
    crossDomain: true, 
    url: "https://krdly-web-dev0.cfapps.io/session", 
    method: "POST", 
    processData: false, 
    contentType: false, 
    mimeType: "multipart/form-data", 
    data: form 
}; 

$.ajax(settings).done(function(response) { 
    console.log(response); 
}); 

mais je m'y suis « 500: Erreur interne du serveur » quand je l'utilise sous le code pour obtenir profil de l'utilisateur:

var form = new FormData(); 
form.append("email", "[email protected]"); 
form.append("pword", "pass123"); 
form.append("geo", "6.4636835,3.8494566"); 

var settings = { 
    async: true, 
    crossDomain: true, 
    url: "https://krdly-web-dev0.cfapps.io/user", 
    method: "GET", 

    xhrFields: { 
    withCredentials: true 
    }, 

    processData: false, 
    contentType: false, 
    mimeType: "multipart/form-data", 
    //data: form 
}; 

$.ajax(settings).done(function(response) { 
    console.log(response); 
}); 

le code suivant est donné par postier mais il does'nt fonctionne dans le navigateur:

var form = new FormData(); 
form.append("email", "[email protected]"); 
form.append("pword", "pass123"); 
form.append("geo", "6.4636835,3.8494566"); 

var settings = { 
    "async": true, 
    "crossDomain": true, 
    "url": "https://krdly-web-dev0.cfapps.io/user", 
    "method": "GET", 
    "headers": { 
    "cache-control": "no-cache", 
    "postman-token": "70f8a8cf-6a8f-4905-aaed-69acaeb63cd2" 
    }, 
    "processData": false, 
    "contentType": false, 
    "mimeType": "multipart/form-data", 
    "data": form 
} 

$.ajax(settings).done(function(response) { 
    console.log(response); 
}); 
+1

Je supprimerait vos jetons, lien et d'autres informations sensibles de votre question. J'ai essayé d'ouvrir ce lien - https://krdly-web-dev0.cfapps.io/user - il donne 500. Peut-être que tout va bien avec votre code et le problème est sur le côté serveur? – curveball

+0

s'il vous plaît quelqu'un faire ce travail, je serai très reconnaissant si un expert jquery ferait cela: peut également discuter sur skype: [email protected] – mubsher

+0

ça fonctionne bien sur le facteur et renvoyer les détails de l'utilisateur, pas question api – mubsher

Répondre

0

Pour une raison quelconque, les cookies envoyés par la requête POST ajax ne sont pas définis par le navigateur. Il suffit d'ajouter ci-dessous à la requête ajax POST:

xhrFields: { 
    withCredentials: true 
}, 

pour résoudre le problème. À la suite de mon code:

<!doctype html> 
<html> 
<head> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"> 
    </script> 
</head> 
<body> 
    <div class=""> 
     <button type="button" name="button">Send Ajax Request</button> 
    </div> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
     $("button").click(function(){ 
     // sendSecondRequest() 
      // .always(sendFirstRequest) 
      // .always(sendSecondRequest); 
     sendFirstRequest().done(sendSecondRequest); 
     }); 
    }); 
    function sendFirstRequest(){ 
     var form = new FormData(); 
     form.append("email", "[email protected]"); 
     form.append("pword", "pass123"); 
     form.append("geo", "6.4636835,3.8494566"); 

     var settings = { 
     async: true, 
     crossDomain: true, 
     url: "https://krdly-web-dev0.cfapps.io/session", 
     method: "POST", 
     processData: false, 
     contentType: false, 
     mimeType: "multipart/form-data", 
     data: form, 
     xhrFields: { 
      withCredentials: true 
     } 
     }; 

     return $.ajax(settings).done(function(response) { 
     console.log(response); 
     }); 
    } 

    function sendSecondRequest(){ 
     var form = new FormData(); 
     form.append("email", "[email protected]"); 
     form.append("pword", "pass123"); 
     form.append("geo", "6.4636835,3.8494566"); 

     var settings = { 
     async: true, 
     crossDomain: true, 
     url: "https://krdly-web-dev0.cfapps.io/user", 
     method: "GET", 

     xhrFields: { 
      withCredentials: true 
     }, 

     processData: false, 
     contentType: false, 
     mimeType: "multipart/form-data", 
     //data: form 
     }; 

     return $.ajax(settings).done(function(response) { 
     console.log(response); 
     }); 
    } 
    </script> 
</body> 

Références:

https://stackoverflow.com/a/7189502/566092

http://aleembawany.com/2006/11/14/anatomy-of-a-well-designed-ajax-login-experience/

+0

merci @ coding_idiot, je l'ai essayé mais je ne fonctionne pas .. – mubsher

+0

étrange, j'ai essayé à nouveau en chrome incognito et cela a bien fonctionné. Êtes-vous en mesure de voir les cookies en utilisant une extension de cookie chrome pour le domaine cible après la première demande? –

+0

Thanx beaucoup d'homme, vous êtes un génie ..... – mubsher