如何使用$ .ajax()jquery发送多个数据

时间:2012-04-09 18:46:35

标签: jquery ajax

我正在尝试使用j查询$ .ajax方法将多个数据发送到我的php脚本但是当我连接多个数据时我只能传递单个数据我在我的PHP脚本中得到未定义的索引错误意味着发出了ajax请求但是数据没有发送我需要知道我应该如何格式化多个数据,以便连续发送到处理脚本名称值对这里是我写的

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

9 个答案:

答案 0 :(得分: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)

答案 1 :(得分:9)

如下所示更改var data = 'id='+ id & 'name='+ name;

使用此代替......

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

这样可以正常工作:)

答案 2 :(得分:6)

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

&符号也需要引用:

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

答案 3 :(得分:5)

var value1=$("id1").val();
var value2=$("id2").val();
data:"{'data1':'"+value1+"','data2':'"+value2+"'}"

答案 4 :(得分: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');
        }
    });

这对我来说已经有一段时间了。

答案 5 :(得分:3)

我建议使用哈希而不是param字符串:

data = {id: id, name: name}

答案 6 :(得分: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) {},

答案 7 :(得分:0)

var CommentData= "u_id=" + $(this).attr("u_id") + "&post_id=" + $(this).attr("p_id") + "&comment=" + $(this).val();

答案 8 :(得分:0)

  var value1=$("id1").val();
  var value2=$("id2").val();
    data:"{'data1':'"+value1+"','data2':'"+value2+"'}"

您可以使用这种方式传递数据