web-dev-qa-db-ja.com

JQueryを使ってGETリクエストでパラメータを渡す方法

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) {

    }
});
200
HeavenCore

Ajaxのデータオプションを使用してください。 ajaxのdataオプションと、データの送信方法を定義するtypePOSTまたは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(); 
252
bipen

あなたのパラメータを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
    }
});
16
Cianan Sims

これが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にはもっと柔軟性のある余地があります

4
theterminalguy

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

$.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を割り当てることができます

2
Jai

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

あなたは$.ajax()を使うことができます、そしてあなたが直接URLにパラメータを入れたくないならば、data:を使います。それはURLに追加されています

出典: http://api.jquery.com/jQuery.ajax/ /

0
Sterling Archer

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

processDatatrueに設定する必要があります。

processData: true, // You should comment this out if is false or set to true
0
Webinan