Jquery 将数组传递到$.ajax()中的ajax请求

Jquery 将数组传递到$.ajax()中的ajax请求,jquery,ajax,arrays,json,Jquery,Ajax,Arrays,Json,我想将数组作为Ajax请求发送: info[0] = 'hi'; info[1] = 'hello'; $.ajax({ type: "POST", url: "index.php", success: function(msg){ $('.answer').html(msg); } }); 如何实现这一点?只需使用JSON.stringify方法并将其作为$.ajax函数的“数据”参数传递,如下所示: $.ajax({ type: "POST", u

我想将数组作为Ajax请求发送:

info[0] = 'hi';
info[1] = 'hello';

$.ajax({
  type: "POST",
  url: "index.php",
  success: function(msg){
    $('.answer').html(msg);
  }
});

如何实现这一点?

只需使用JSON.stringify方法并将其作为$.ajax函数的“数据”参数传递,如下所示:

$.ajax({
    type: "POST",
    url: "index.php",
    dataType: "json",
    data: JSON.stringify({ paramName: info }),
    success: function(msg){
        $('.answer').html(msg);
    }
});

您只需确保在页面中包含JSON2.js文件……

注意:在较新版本的jQuery上不起作用

由于您使用的是jQuery,请使用它的seralize函数序列化数据,然后将其传递到ajax调用的数据参数中:

info[0] = 'hi';
info[1] = 'hello';

var data_to_send = $.serialize(info);

$.ajax({
    type: "POST",
    url: "index.php",
    data: data_to_send,
    success: function(msg){
        $('.answer').html(msg);
    }
});

是的…这很有效..谢谢..还有一件事可以做…那就是初始化信息={};然后data:info,它发送0=hi&1=hello,它会工作吗?取决于服务器端代码。info={}是Javascript中的普通对象。info=[]是一个数组对象。如果希望
info=arrayasvalues
而不是每个键都是一个参数,你会怎么做?你的意思是info=0,1吗?我正在这样做,我的C#控制器既有
列表
又有
字符串[]
参数,但在这两种情况下,在
列表
string[]
参数的第一个元素中,过去的数组最后是一个逗号分隔的字符串。有什么想法吗?这里的解决方案:输入:'POST',url:'/url/action/',数据:{param1:1,id:'text'},数据类型:'text',我需要添加
JSON.stringify(…)
感谢您的帮助!在我的例子中,请求的键值映射与上面的代码是错误的。我将“data”行更改为:data:{paramName:JSON.stringify(info)},我尝试了这一点,我的C#controller既有
列表
又有
字符串[]
参数,但在这两种情况下,过去的数组最终都是
列表
字符串[]
参数的第一个元素中的一个逗号分隔字符串。有什么想法吗?@Joe尝试将$.ajax调用中的数据类型指定为“application/json”。如果您使用的是Web API,请确保使用[FromBody]属性将参数修饰到控制器上,以便可以正确地反序列化。这不是全部事实,至少今天不是这样。jQuery实际上不会自动序列化任何数组。当我尝试使用简单的整数数组时,它只保留了最后一项。请查看这篇文章了解更多解释:谢谢@userfuser我已经更新了答案并删除了自动序列化部分。这怎么会有这么多的投票?没有像
jQuery.serialize()
这样的jQuery函数。有
.serialize()
,但它用于一组表单元素。试试这段代码,你只会得到
TypeError:$。serialize不是一个函数
这对你来说是如何工作的?@MunkhdelgerTumenbayar看到答案日期了吗?
info = [];
info[0] = 'hi';
info[1] = 'hello';


$.ajax({
   type: "POST",
   data: {info:info},
   url: "index.php",
   success: function(msg){
     $('.answer').html(msg);
   }
});