How to pass parameters in GET requests with jQuery

ajax, get, javascript, jquery

Solution

Use data option of ajax. You can send data object to server by `data` option in ajax and the `type` which defines how you are sending it (either `POST` or `GET`). The default type is `GET` method

Try this

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

And you can get the data by (if you are using PHP)

 $_GET['ajaxid'] //gives 4
 $_GET['UserID'] //gives you the sent userid

In aspx, I believe it is (might be wrong)

 Request.QueryString["ajaxid"].ToString(); 

Problem

How should I be passing query string values in a jQuery Ajax request? I currently do them as follows but I'm sure there is a cleaner way that does not require me to encode manually. ``` $.ajax({ url: "ajax.aspx?ajaxid=4&UserID=" + UserID + "&EmailAddress=" + encodeURIComponent(EmailAddress), success: function(response) { //Do Something }, error: function(xhr) { //Do Something to handle error } }); ``` I’ve seen examples where query string parameters are passed as an array but these examples I've seen don't use the `$.ajax()` model, instead they go straight to `$.get()`. For example: ``` $.get("ajax.aspx", { UserID: UserID , EmailAddress: EmailAddress } ); ``` I prefer to use the $.ajax() format as it's what I’m used to (no particularly good reason - just a personal preference). Edit 09/04/2013: After my question was closed (as "Too Localised") i found a related (identical) question - with 3 upvotes no-less (My bad for not finding it in the first place): Using jquery to make a POST, how to properly supply 'data' parameter? This answered my question perfectly, I found that doing it this way is much easier to read & I don't need to manually use `encodeURIComponent()` in the URL or the DATA values (which is what i found unclear in bipen's answer). This is because the `data` value is encoded automatically via `$.param()`). Just in case this can be of use to anyone else, this is the example I went with: ``` $.ajax({ url: "ajax.aspx?ajaxid=4", data: { "VarA": VarA, "VarB": VarB, "VarC": VarC }, cache: false, type: "POST", success: function(response) { }, error: function(xhr) { } }); ```

Original source

Related problems