2012-03-26 5 views
0

サーバーへのHTTPリクエストを行いたい。しかし、私はそれのための認証が必要です。以下のものを使用しましたが、現在の私のユーザ名は電子メールであり、動作していません(定義されていません)。誰かがJSの "@"に何が間違っているのか考えていますか?どのように私はそれをエンコードすることができますか?JavaScriptとAjax "@"

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

? Firebugで検査し、間違っていると思われることを教えてください。 –

+1

「email%40email.com」というユーザー名をエンコードしようとしましたか? –

+0

@ user1113426とocanalドキュメントをチェックしてください。両方とも存在しています。 –

答えて

1

投稿されたすべての回答は、usernameというパラメータのdataオプションがusernameオプションと同等であることを暗示しているようです。私はこれが真実だとは思わないが、現時点でテスト環境を持っていないことがわかっている。

私はそれが実際にユーザー名とパスワードだけでなく、要求されるなど、usernamepasswordあなたは、多くの場合、ftpサイトのブラウザアクセスのために使用されたURL(username:[email protected])にユーザー名とパスワードを渡す方法と似ていると思いますパラメーター。

私の仮定が正しければ、私はあなたが行う必要がありますすべては、このであると考えています。サーバーがあなたに戻って何

email%40email.com

2

あなたは、データオブジェクトの内部にusernamepasswordを渡す必要があります。 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

使用このコード:

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

または文字列でパラメータを渡す:

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、HTTPアクセス認証要求に応答するために使用されるユーザー名" ** ** "username"という名前のリクエストパラメータを渡すことは同じことをするでしょうか? –

+0

@JamesMontagne:すみません、もっと説明できますか? –

+0

彼は 'ajax'の' username'オプションを使用しようとしています。私が貼り付けたのは、このオプションの説明です。あなたの解決策は 'data'オプションで渡すことです。これは同等ではないと私は考えています。私はあなたが私がしなかった何かを知っていて、その2つは同等であったかどうか疑問に思っていました。 –

0

ブランドンの答えはこれをコーディングするためのより良い方法ですが、特に探している場合URLに電子メールアドレスをエンコードするには、javascriptのネイティブencodeURIComponent()を使用します。

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