【问题标题】:Why is this array not being passed?为什么这个数组没有被传递?
【发布时间】:2019-08-06 19:57:42
【问题描述】:

将表单数据发送到 PHP 脚本以进行处理的简单脚本。 assoc 数组中的数据并输出到控制台表明它存在。使用 jquery AJAX 函数传递数据,但是 PHP 脚本没有接收数组。但是,如果我将数据硬编码到函数中,则会传递数据。

如果尝试将 AJAX 函数“方法”设置为 POST 并删除该选项。我为数组尝试了不​​同的格式。将数组作为硬编码数组的一部分传递。

Javascript 方面

function saveInformation(e) {
            var d       = []
            var f       = $(e)[0].id; //Form name
            var formData    = $('#'+f).serializeArray();

            formData.forEach(function(item){
                d[item.name] = item.value;  
            })


            console.log('data',d)

            $.ajax({
                data:       d,
                url:        "TableUpdate.php"
            })
            .done(function(e) { $('#agentGeneralInfoTitle').text('Agent General Information (Saved)'); console.log(e);})
            .fail(function(e) { 
                alert("save failed\n" + e.responseText);  console.log(e);
            });

        }

console.log 命令显示变量 d 中的数据。所有数据都存在且格式正确。

PHP端

<?
require_once('/var/www/Debugging/ChromePhp.php');
chromePHP::log($_REQUEST,$_POST);
:
:
:
?>

这会打印出“[],[]”。它在确定数据不存在的情况下正确完成。

我希望数据被传递并且 chromePHP::log 显示一个包含数据的数组。

【问题讨论】:

    标签: javascript php jquery forms


    【解决方案1】:

    var d 应该是一个对象而不是数组。

    数组仅在 javascript 中具有数字索引

    改变

    var d = []
    

    var d = {}
    

    同时使用serialize() 而不是serializeArray() 会更简单,因为您根本不需要循环创建d

      function saveInformation(e) {
            // assuming `e` is form element
            var formData    = $(e).serialize();
    
            $.ajax({
                data:       formData    ,
                url:        "TableUpdate.php"
            })
            .done(function(e) { $('#agentGeneralInfoTitle').text('Agent General Information (Saved)'); console.log(e);})
            .fail(function(e) { 
                alert("save failed\n" + e.responseText);  console.log(e);
            });
    
        }
    

    【讨论】:

    • ###@&*@^#*&@#@#!!!!!!!!空白,空白,空白,空白,空白.......我搜索了那个愚蠢的错误 8 小时,错过了我使用了错误的 ^*&&^@*#$ 括号!感谢您的帮助。
    • 使用serialize()查看更新更简单
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2013-03-11
    • 2018-11-05
    • 1970-01-01
    相关资源
    最近更新 更多