我正在尝试使用包含数据的数组变量来执行$.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参数
那么,这将是哪种方式(如果可能的话)?
答案 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');