Вопрос по jquery, ajax – Как отправить несколько данных с помощью $ .ajax () jquery

40

я пытаюсь отправить несколько данных, используя метод j query $ .ajax, в мой php-скрипт, но я могу передать только отдельные данные, когда объединяю несколько данных, и я получаю неопределенную ошибку индекса в моем php-скрипте. tat означает, что запрос ajax выполнен, но данные не выполнены послал мне нужно знать, как мне отформатировать несколько данных, чтобы последовательно отправить их в сценарий обработки в паре именных долей, вот что я написал

<code><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>
</code>
Я обычно просто помещаю связанные объекты в объект (или оставляю их в исходном объекте), преобразую весь объект в строку JSON и отправляю строку JSON в параметре. На стороне сервера у меня есть php, преобразующий строку JSON обратно в объект, и вуаля, я в бизнесе. Jonathan M

Ваш Ответ

9   ответов
0
var CommentData= "u_id=" + $(this).attr("u_id") + "&post_id=" + $(this).attr("p_id") + "&comment=" + $(this).val();
0
  var value1=$("id1").val();
  var value2=$("id2").val();
    data:"{'data1':'"+value1+"','data2':'"+value2+"'}"

86

а 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)
"id =" + id & amp; "имя =" + имя должно быть изменено на "идентификатор =" + идентификатор + "& имя =" + имя
@SaeedAnsari В дополнение к этому, это действительно хорошая идея для очистки ваших переменных с помощьюencodeURIComponent как в примере в ответе. Нет причин не защищать от XSS-атак.
+1 Объект данныхthe путь
1

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) {},
6
var data = 'id='+ id  & 'name='+ name;

var data = 'id='+ id  + '&name='+ name;
+1, так как в этом суть проблемы, хотя я бы использовал объект данных, предложенный в ответе Джаспера.
@sohaan: Да, объект Javascript - лучшее решение.
это сработало, но я думаю, что & amp; (амперсанд) в данных делает код трудным для понимания sohaan
5
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');
        }
    });

3

data = {id: id, name: name}
9

var data = 'id='+ id & 'name='+ name; как показано ниже,

используйте это вместо .....

var data = "id="+ id + "&name=" + name;

это будет работать нормально :)

Похожие вопросы