JQuery Ajaxリクエストでクエリ文字列値を渡す方法は?私は現在以下のようにそれらをしますが、私が手動でエンコードする必要がないよりきれいな方法があると確信しています。
$.ajax({
url: "ajax.aspx?ajaxid=4&UserID=" + UserID + "&EmailAddress=" + encodeURIComponent(EmailAddress),
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
クエリ文字列パラメータが配列として渡される例を見ましたが、私が見たこれらの例は$.ajax()
モデルを使わず、代わりに$.get()
に直接行きます。例えば:
$.get("ajax.aspx", { UserID: UserID , EmailAddress: EmailAddress } );
私はこれまで慣れてきたので$ .ajax()フォーマットを使用することを好みます(特に良い理由はない - 個人的な好みだけ)。
編集09/04/2013:
私の質問が( "ローカライズされた"として)クローズされた後、私は関連する(同一の)質問を見つけました - 3つの支持票なし - (最初の場所でそれを見つけられないのは私の悪い):
jqueryを使用してPOSTを作成する、 'data'パラメータを正しく指定する方法
これは私の質問に完全に答えた、私はこのようにすることは読むのがはるかに簡単で、URLやDATAの値に手動でencodeURIComponent()
を使う必要がないことを発見した。これはdata
の値が $.param()
)によって自動的にエンコードされるためです。念のために言っておくと、これが他の人に役立つ可能性がある場合、これは私が行った例です。
$.ajax({
url: "ajax.aspx?ajaxid=4",
data: {
"VarA": VarA,
"VarB": VarB,
"VarC": VarC
},
cache: false,
type: "POST",
success: function(response) {
},
error: function(xhr) {
}
});
Ajaxのデータオプションを使用してください。 ajaxのdata
オプションと、データの送信方法を定義するtype
(POST
またはGET
)によって、データオブジェクトをサーバーに送信できます。デフォルトの型はGET
methodです
これを試して
$.ajax({
url: "ajax.aspx",
type: "get", //send it through get method
data: {
ajaxid: 4,
UserID: UserID,
EmailAddress: EmailAddress
},
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
そして、あなたは(PHPを使っているなら)でデータを得ることができます。
$_GET['ajaxid'] //gives 4
$_GET['UserID'] //gives you the sent userid
Aspxでは、私はそれが(間違っているかもしれない)だと思います
Request.QueryString["ajaxid"].ToString();
あなたのパラメータをdata
呼び出しのajax
部分に入れてください。 the docs を参照してください。そのようです:
$.ajax({
url: "/TestPage.aspx",
data: {"first": "Manu","Last":"Sharma"},
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
これがjQueryの$.get
を使った構文です。
$.get(url, data, successCallback, datatype)
だからあなたの場合、それはに等しいだろう、
var url = 'ajax.asp';
var data = { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress };
var datatype = 'jsonp';
function success(response) {
// do something here
}
$.get('ajax.aspx', data, success, datatype)
注 $.get
では、エラーハンドラを設定することはできません。しかし、 $ .ajaxSetup() 、 $ .ajaxError() のいずれかを使用するか、以下のように.fail
に$.get
をチェーンする方法があります。
$.get(url, data, success, datatype)
.fail(function(){
})
データタイプを 'jsonp'に設定した理由はブラウザと同じOriginポリシーの問題によるものですが、あなたのjavascriptがホストされているのと同じドメインでリクエストをしている場合はjson
にデータタイプを設定してください。
Jqueryの$.get
を使いたくないならば - ドキュメントを見てください$.ajax
にはもっと柔軟性のある余地があります
これを追加してみてください。
$.ajax({
url: "ajax.aspx",
type:'get',
data: {ajaxid:4, UserID: UserID , EmailAddress: encodeURIComponent(EmailAddress)},
dataType: 'json',
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
どのデータ型が期待されるかに依存します、あなたはhtml, json, script, xml
を割り当てることができます
Dataプロパティを使用すると、文字列を送信できます。サーバー側のコードでは、それを文字列引数名 "myVar"として受け入れ、それを解析することができます。
$.ajax({
url: "ajax.aspx",
data: [myVar = {id: 4, email: 'emailaddress', myArray: [1, 2, 3]}];
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
あなたは$.ajax()
を使うことができます、そしてあなたが直接URLにパラメータを入れたくないならば、data:
を使います。それはURLに追加されています
data
を指定したがブラウザが[Object object]
で終わるURLにリクエストを送信していたのと同じ問題がありました。
processData
をtrue
に設定する必要があります。
processData: true, // You should comment this out if is false or set to true