2017-08-10 2 views
1

Zuerst habe ich anmelden erfolgreich und ein Cookie von Server in meinem Browser mit folgenden Snippet gesetzt:Erste Fehler beim Senden jqueryAjax Anfrage

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); 
}); 

aber ich habe „500: Interner Serverfehler“, wenn ich unten Code verwenden, für immer Benutzerprofil:

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); 
}); 

der folgende Code wird durch Postbote gegeben, aber es does'nt Werke in Browser:

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

Ich würde Ihre Token, Link und andere sensible Informationen aus Ihrer Frage entfernen. Ich habe versucht, diesen Link zu öffnen - https://krdly-web-dev0.cfapps.io/user - es gibt 500. Vielleicht ist alles in Ordnung mit Ihrem Code und das Problem ist auf der Serverseite? – curveball

+0

bitte jemand machen diese Arbeit, ich werde sehr dankbar sein, wenn ein Jquery-Experte dies tun würde: auch auf Skype diskutieren: [email protected] – mubsher

+0

es funktioniert gut auf Postbote und die Benutzerdetails, nicht API-Ausgabe – mubsher

Antwort

0

Aus irgendeinem Grund werden die von der POST Ajax Anfrage gesendeten Cookies nicht vom Browser gesetzt. Fügen Sie der AJAX-POST-Anforderung Folgendes hinzu:

xhrFields: { 
    withCredentials: true 
}, 

, um das Problem zu beheben. Im Anschluss ist mein 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> 

Referenzen:

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

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

+0

danke @coding_idiot, ich habe es versucht, aber ich arbeite nicht .. – mubsher

+0

seltsam, ich versuchte es wieder in Chrom Inkognito und es hat gut funktioniert. Können Sie die Cookies nach der ersten Anfrage mit einer Chrome-Cookie-Erweiterung für die Zieldomäne sehen? –

+0

Danke viel Mann, du bist ein genialer ..... – mubsher

Verwandte Themen