Как отправить несколько данных с помощью $.ajax() jquery
Я пытаюсь отправить несколько данных с помощью j запроса $.ajax-метода на мой php script, но я могу передавать только отдельные данные, когда я объединяю несколько данных, я получаю ошибку индекса undefined в моем PHP скрипт tat означает запрос ajax выполняется, но данные не отправляются. Мне нужно знать, как следует форматировать несколько данных для последовательной отправки его на обработку script в паре имен vale, вот что я написал
<script>
$(document).ready(function() {
$('#add').click(function () {
var name = $('#add').attr("data_id");
var id = $('#add').attr("uid");
var data = 'id='+ id & 'name='+ name; // this where i add multiple data using ' & '
$.ajax({
type:"GET",
cache:false,
url:"welcome.php",
data:data, // multiple data sent using ajax
success: function (html) {
$('#add').val('data sent sent');
$('#msg').html(html);
}
});
return false;
});
});
</script>
<span>
<input type="button" class="gray_button" value="send data" id="add" data_id="1234" uid="4567" />
</span>
<span id="msg"></span>
Ответы
Ответ 1
Вы можете создать объект пар ключ/значение, а jQuery сделает для вас все остальное:
$.ajax({
...
data : { foo : 'bar', bar : 'foo' },
...
});
Таким образом, данные будут правильно закодированы автоматически. Если вы хотите придумать свою собственную строку, убедитесь, что используете encodeURIComponent()
: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent
Ваш текущий код не работает, потому что строка не придумана правильно:
'id='+ id & 'name='+ name
должен быть:
'id='+ encodeURIComponent(id) + '&name='+ encodeURIComponent(name)
Ответ 2
Измените var data = 'id='+ id & 'name='+ name;
, как показано ниже,
var data = { 'id': id , 'name': name};
Ответ 3
var data = 'id='+ id & 'name='+ name;
Также необходимо указать амперсанд:
var data = 'id='+ id + '&name='+ name;
Ответ 4
var value1=$("id1").val();
var value2=$("id2").val();
data:"{'data1':'"+value1+"','data2':'"+value2+"'}"
Ответ 5
var my_arr = new Array(listingID, site_click, browser, dimension);
var AjaxURL = 'http://example.com';
var jsonString = JSON.stringify(my_arr);
$.ajax({
type: "POST",
url: AjaxURL,
data: {data: jsonString},
success: function(result) {
window.console.log('Successful');
}
});
Это работало для меня довольно долгое время.
Ответ 6
Я бы рекомендовал использовать хеш вместо строки param:
data = {id: id, name: name}
Ответ 7
вы можете использовать FormData
взгляните на мой фрагмент из MVC
var fd = new FormData();
fd.append("ProfilePicture", $("#mydropzone")[0].files[0]);// getting value from form feleds
d.append("id", @(((User) Session["User"]).ID));// getting value from session
$.ajax({
url: '@Url.Action("ChangeUserPicture", "User")',
dataType: "json",
data: fd,//here is your data
processData: false,
contentType: false,
type: 'post',
success: function(data) {},
Ответ 8
var CommentData= "u_id=" + $(this).attr("u_id") + "&post_id=" + $(this).attr("p_id") + "&comment=" + $(this).val();
Ответ 9
var value1=$("id1").val();
var value2=$("id2").val();
data:"{'data1':'"+value1+"','data2':'"+value2+"'}"
Вы можете использовать этот способ для передачи данных