2012-03-26 5 views
0

Ich möchte eine HTTP-Anfrage an den Server machen. Aber ich brauche eine Authentifizierung dafür. Ich benutze den unten stehenden, aber jetzt ist mein Benutzername eine E-Mail und es funktioniert nicht (bekomme einen undefinierten). Hat jemand eine Idee was mit dem "@" in JS falsch ist? Wie kann ich es kodieren?JavaScript und Ajax "@"

$.ajax({ 
    type: "GET", 
    url: urlString, 
    async: false, 
    beforeSend: function(x) { 
     }, 
    dataType: "json", 
    username: "[email protected]", 
    password: "password", 
    success: function(data){ 
    returnData = data; 
    } 
}); 
+0

Was der Server an Sie zurückkehr? Können Sie in Firebug inspizieren und uns sagen, was es falsch findet? –

+1

Haben Sie versucht, den Benutzernamen als "email% 40email.com" zu verschlüsseln? –

+0

@ user1113426 und ocanal Überprüfen Sie die Dokumente, die beide vorhanden sind. –

Antwort

1

Alle veröffentlichten Antworten scheinen zu implizieren, dass die Option data mit einem Parameter username der Option username entspricht. Ich glaube nicht, dass das stimmt, aber ich habe momentan keine Testumgebung, um das herauszufinden.

Ich denke, username und password sind ähnlich wie Sie einen Benutzernamen und ein Passwort in einer URL übergeben (username:[email protected]), die häufig für den Browser-Zugriff von FTP-Sites verwendet wurde, usw. Es ist eigentlich ein Benutzername und Passwort, nicht nur Wunsch Parameter.

Wenn meine Annahmen richtig sind, glaube ich, alles, was Sie tun müssen, ist dies:

email%40email.com

2

Sie benötigen username und password in innerhalb eines Datenobjekts zu übergeben. http://api.jquery.com/jQuery.ajax/.

$.ajax({ 
    type: "GET", 
    url: urlString, 
    async: false, 
    beforeSend: function(x) { 
    }, 
    dataType: "json", 
    data: {username: "[email protected]", password: "password"}, 
    success: function(data){ 
    returnData = data; 
    } 
}); 
2

Mit diesem Code:

var request = $.ajax({ 
    url: urlString, 
    type: "GET", 
    async: false, 
    data: {  
    username: "[email protected]", 
    password: "password", 
    } 
}); 

request.done(function(msg) { 
    console.log("done. msg:" + msg); 
}); 

request.fail(function(jqXHR, textStatus) { 
    alert("Request failed: " + textStatus); 
}); 

Oder Übergabe von Parametern mit einem String:

var request = $.ajax({ 
    url: urlString, 
    type: "GET", 
    async: false, 
    data: "[email protected]&password=password" 
}); 

request.done(function(msg) { 
    console.log("done. msg:" + msg); 
}); 

request.fail(function(jqXHR, textStatus) { 
    alert("Request failed: " + textStatus); 
}); 
+0

** "username: String, Ein Benutzername, der als Antwort auf eine HTTP-Zugriffsauthentifizierungsanforderung verwendet wird." ** Sind Sie sicher, dass die Übergabe eines Anforderungsparameters mit dem Namen "username" dasselbe bewirkt? –

+0

@JamesMontagne: Entschuldigung, können Sie bitte mehr erklären? –

+0

Er versucht, die 'username' Option von' ajax' zu verwenden. Was ich eingefügt habe, ist die Beschreibung dieser Option. Ihre Lösung besteht darin, sie in der Option "Daten" zu übergeben, die ich nicht für gleichwertig halte. Ich habe mich gefragt, ob Sie etwas wussten, was ich nicht wusste und dass die beiden gleichwertig waren. –

0

Brandon Antwort ist der bessere Weg, dies zu codieren, aber wenn Sie für eine suchen gezielt Um die E-Mail-Adresse in der URL zu verschlüsseln, verwenden Sie die native encodeURIComponent():

$.ajax({ 
    type: "GET", 
    url: urlString, 
    async: false, 
    beforeSend: function(x) { 
     }, 
    dataType: "json", 
    username: encodeURIComponent("[email protected]"), 
    password: "password", 
    success: function(data){ 
    returnData = data; 
    } 
});