302

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()形式を使用することを好みます。これは、私が慣れている形式だからです(特に理由はありませんが、個人的な好みです)。

2013年9月4日編集:

私の質問が閉じられた後(「あまりにもローカライズされた」として)、私は関連する(同一の)質問を見つけました-3つの賛成票があります(そもそもそれを見つけられなかったのは悪いことです):

jqueryを使用してPOSTを作成するには、「データ」パラメータを適切に指定する方法を教えてください。

これは私の質問に完全に答えました。この方法で行うとはるかに読みやすくなりencodeURIComponent()、URLまたはDATA値を手動で使用する必要がないことがわかりました(これはbipenの回答では不明確でした)。これは、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) {

    }
});
4

8 に答える 8

365

ajax の data オプションを使用します。dataajaxのオプションでデータオブジェクトをサーバーに送信でき、送信type方法を定義します(またはのいずれPOSTGET)。デフォルトのタイプはGETメソッドです

これを試して

$.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(); 
于 2013-03-22T17:35:46.320 に答える
23

パラメータを呼び出しのdata一部に入れますajaxドキュメントを参照してください。そのようです:

$.ajax({
    url: "/TestPage.aspx",
    data: {"first": "Manu","Last":"Sharma"},
    success: function(response) {
        //Do Something
    },
    error: function(xhr) {
        //Do Something to handle error
    }
});
于 2013-03-22T17:36:36.647 に答える
4

これを追加してみてください:

$.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

于 2013-03-22T17:36:09.883 に答える
2

私が指定した場所と同じ問題がありましdataたが、ブラウザは で終わる URL にリクエストを送信していました[Object object]

processDataに設定する必要がありますtrue

processData: true, // You should comment this out if is false or set to true
于 2017-12-29T20:33:17.837 に答える
1

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
    }
});
于 2013-03-22T17:37:42.357 に答える
0

を使用できます。$.ajax()パラメーターを URL に直接入れたくない場合は、data:. それはURLに追加されます

ソース: http://api.jquery.com/jQuery.ajax/

于 2013-03-22T17:36:57.533 に答える