0

我正在尝试$.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

4 回答 4

1

我总是使用这样的 $.ajax 形式来解决此类问题:

$.ajax({
  url: 'do.php',
  data: {
      myarray: yourarray
  },
  dataType: 'json',
  traditional: true,
  success: function(data) {
     alert('Load was performed.');
  }
});

通过将数组作为数据传输,传统非常重要。

于 2012-08-08T12:20:39.160 回答
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

于 2012-08-08T12:32:28.243 回答
1

可能是参数数组中的变量

运行您的代码并补充了以下参数:

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

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

于 2012-08-08T12:25:40.837 回答
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');
于 2012-08-08T12:53:11.667 回答