Как передать параметры в GET-запросах с помощью jQuery

как я должен передавать значения строки запроса в запросе 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 upvotes не менее (мой плохой, чтобы не найти его в первую очередь):

используя jquery для создания сообщения, Как правильно указать параметр "данные"?

это ответило на мой вопрос Отлично, я обнаружил, что делать это таким образом намного проще читать & мне не нужно вручную использовать encodeURIComponent() в URL-адресе или значениях данных (что я нашел неясным в ответе 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) {

    }
});

8 ответов


используйте опцию данных ajax. Вы можете отправить объект данных на сервер по data опция в ajax и type, который определяет, как вы отправляете его (либо POST или GET). Тип по умолчанию: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
  }
});

и вы можете получить данные с помощью

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

положите ваши params в data часть ajax звонок. См.документы. Вот так:

$.ajax({
    url: "/TestPage.aspx",
    data: {"first": "Manu","Last":"Sharma"},
    success: function(response) {
        //Do Something
    },
    error: function(xhr) {
        //Do Something to handle error
    }
});

попробуйте добавить это:

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

вот синтаксис с использованием 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" связана с браузер те же проблемы политики происхождения, но если вы делаете запрос в том же домене, где размещен ваш javascript, вы должны быть в порядке с типом данных, установленным в json.

если вы не хотите использовать jquery $.get затем посмотреть документы на $.ajax, позволяет большую гибкость


можно использовать $.ajax(), и если вы не хотите помещать параметры непосредственно в URL-адрес, используйте data:. Это добавляется к URL

источник:http://api.jquery.com/jQuery.ajax/


была та же проблема, где я указал data но браузер отправлял запросы на URL, заканчивающиеся на [Object object].

вы должны есть!--3--> значение true.

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

параметр data метода ajax позволяет отправлять данные на серверную сторону.На стороне сервера вы можете запросить данные.Смотрите код

var id=5;
$.ajax({
    type: "get",
    url: "url of server side script",
    data:{id:id},
    success: function(res){
        console.log(res);
    },
error:function(error)
{
console.log(error);
}
});

на стороне сервера получите его, используя переменную $_GET.

$_GET['id'];

здесь вы можете пример.