【问题标题】:Send array with $.post使用 $.post 发送数组
【发布时间】:2012-08-08 12:13:05
【问题描述】:

我正在尝试使用包含数据的数组变量执行 $.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 参数

那么,这将是正确的做法(如果可能的话)?

【问题讨论】:

    标签: javascript jquery arrays post


    【解决方案1】:

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

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

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

    【讨论】:

    • hmmm,很有趣...不过我要多搜索一下,看看是否还有办法使用$.post()
    • 也许只是尝试在您的选项中添加“traditional: true”
    【解决方案2】:

    可能是参数数组中的变量

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

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

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

    【讨论】:

      【解决方案3】:

      使用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

      【讨论】:

        【解决方案4】:

        好的,在这些 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');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-25
          • 2011-04-22
          • 2012-05-03
          • 1970-01-01
          • 2016-10-24
          • 2011-05-14
          • 2012-06-12
          • 1970-01-01
          相关资源
          最近更新 更多