2013-03-22 3 views
151

Как мне передать значения строки запроса в запросе jQuery Ajax? В настоящее время я делаю их следующим образом, но я уверен, что есть более чистый способ, который не требует, чтобы я кодировал вручную.Как передать параметры в запросах GET с помощью jQuery

$.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 не менее (Мой плохо не найти это в первую очередь):

Using jquery to make a POST, how to properly supply 'data' parameter?

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

    } 
}); 
+0

$ .get это просто ярлык для $ .ajax –

+0

кроме, ваш Edit 09/04/2013 является почтовый запрос :-), но он, по-видимому, работает так же, как GET. – commonpike

ответ

174

Использование опции данных Аякса. Вы можете отправить объект данных на сервер по номеру 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 
+1

вам не нужен 'encodeURIComponent'. jquery сделает это за вас. – Lane

+0

aspx but '$ _GET' php lol :-) –

1

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

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

+0

Ваше решение полезно, но интересно, как определить переменную (' ID') перед тем, как передать ее в качестве параметра? У меня Q на SO, https://stackoverflow.com/questions/41192531/add-editable-textbox-to-specific-datapoint-in-a-chart. Я продвинулся в этом Q намного дальше, где теперь я вызываю диалог jquery и вызываю ajax для извлечения данных из mysql. Мне не хватает ссылки о том, как получить уникальный идентификатор, связанный с каждым *** datapoint щелчком ***. Цените, если вы можете мне помочь. Спасибо – user5249203

13

Поместите свои параметры в 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 
    } 
}); 
+1

Простой и лаконичный. Большое спасибо! – FearlessFuture

0

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

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

1

Свойство данных позволяет отправлять в строке. В коде на стороне сервера принимайте его как строковое имя аргумента «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

Зачем вам делать 'stringify'? Реализация jQuery 'ajax' позаботится об этом для вас. – Steve

+1

Ты совершенно прав. Немного мозгового пердуна. Благодарю. – Danwilliger

-1

Параметр данных метода АЯКС позволяет передавать данные на стороне сервера side.On сервера вы можете запросить data.See код

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']; 

Здесь вы можете найти example.

0

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

У вас должно быть processData, установленное на true.

processData: true, // You should comment this out if is false or set to true 
Смежные вопросы