Как передать параметры в 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'];
здесь вы можете пример.