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

パラメータ配列の変数である可能性があります

コードを実行し、次のようなパラメータを補足しました。

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

うまくいくようです。問題は、配列の一部として渡す変数にあるに違いないと思います。つまり、menu_name、file_name、status、access、parent、classes変数はすべて、期待どおりですか?たとえば、コンソールはそれらをログに記録し、それらがどのように出力されるかを確認します。1つは、jsonに変換されないオブジェクトである可能性があります。

于 2012-08-08T12:25:40.837 に答える
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 に答える
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 に答える