使用$ .post发送数组

时间:2012-08-08 12:13:06

标签: javascript jquery arrays post

我正在尝试使用包含数据的数组变量来执行$.post()函数,但是它接缝我做错了因为它不会去或者不可能

var parameters = [menu_name, file_name, status, access, parent, classes];
console.log(parameters);

$.post('do.php', { OP: 'new_menu', data: parameters }, function(result) {
     console.log(result);
}, 'json'); //Doesn't work

Firebug调试:NS_ERROR_XPC_BAD_CONVERT_JS:无法转换JavaScript参数

那么,这将是哪种方式(如果可能的话)?

4 个答案:

答案 0 :(得分:1)

我正在使用这样的问题,总是像这样的$ .ajax形式:

$.ajax({
  url: 'do.php',
  data: {
      myarray: yourarray
  },
  dataType: 'json',
  traditional: true,
  success: function(data) {
     alert('Load was performed.');
  }
});
通过将数组作为数据传输,传统非常重要。

答案 1 :(得分:1)

可以是参数数组

中的变量

运行代码并为以下内容补充参数:

var parameters = ['foo','bar'];

似乎工作正常。我认为问题必须在您作为数组的一部分传递的变量中。即menu_name,file_name,status,access,parent和classes变量是否与您期望的一样?例如控制台记录它们,看看它们出现了什么。一个可能是一个不能转换为json的对象。

答案 2 :(得分:1)

使用JSON.stringify()
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify

$.post('do.php', {
        OP: 'new_menu',
        data: JSON.stringify(parameters)
    },
    function(result) {
        console.log(result);
    },
    'json'
);

然后,在服务器端使用 json_decode()转换为php数组。
http://php.net/manual/es/function.json-decode.php

答案 3 :(得分:0)

好的,所以在这些StackOverflow研究员的帮助下,我设法让它按照我想要的方式工作:

var parameters = {
       'name': menu_name.val(),
       'file': file_name.val(),
       'status': status.val(),
       'group': group.val(),
       'parent': parent.val(),
       'classes': classes.val()
};

$.post('do.php', { OP: 'new_menu', data: parameters }, function(result) {
    console.log(result);
}, 'json');