【问题标题】:PHP Ajax Sending ArrayPHP Ajax 发送数组
【发布时间】:2018-01-18 20:34:41
【问题描述】:

我正在向一个名为 update.php 的 PHP 文件发送一个数组,并且在该脚本的所有先前版本中它都可以正常工作,但由于某些奇怪的原因,它在这种情况下无法正常工作。

这里是文件:

var phpLocation = '/admin/_backend' + $( this ).attr("action"),
    usergroup = $('input:hidden[name="usergroup"]').val(),
    serializedData = $('input:checkbox[name="permission"]:checked').map(function () {
                         return this.value;
                      }).get();

var ajaxData = {'usergroup_permissions': serializedData, 'usergroup' : usergroup};

$.ajax({
    type: "POST",
    url: phpLocation,
    data: ajaxData,
    success: function(data){
        $("#post_reply").html(data);

        console.log( ajaxData );
    }
});

当尝试从数组中抓取 usergroup_permissions 并将其转换为以逗号分隔的列表时,它似乎不起作用。

即使使用$_POST['usergroup_permissons'] 似乎也不起作用..

$permission_list = implode(",", $_POST['usergroup_permissions']);

编辑
这是 console.log 输出

print_r( $_POST ); 返回:

【问题讨论】:

  • serializedData 末尾的 .get() 是什么?我们可以看看 console.log(serializedData) 的结果吗?另外,该脚本是在绘制 DOM 之后运行的吗?
  • @Salketer 老实说我不太确定,但它在获取数组时有效。我将编辑原始帖子以包含console.log( ajaxData ); 的图像
  • $_POST 的 print_r() 或 var_dump() 会很快告诉您问题所在。
  • print_r() 输出中的数组键与ajaxData 中的键不匹配。具体来说,ajaxAdata 包含usergroup_permissions,而print_r() 显示permission。从您提供的代码中我看不出为什么会发生这种情况,但我怀疑这是指向原因的一个很好的指针。
  • 这没有意义。您的 ajaxData contains usergroup_permissions` 和 usergroup 但您的 print_r 显示 permission 而不是 usergroup_permissions。您确定要发布到正确的脚本吗?或者..随机猜测您的后端设置,但我假设您可能有路线/视图并且您没有引用正确的参数?

标签: php arrays ajax


【解决方案1】:

我发现在脚本的其他地方我正在调用整个表单的序列化,因此第二张图片中的 permission 来自该位置(因为它是复选框的名称)。

我现在已经纠正了这个问题,它工作正常。

非常感谢您的所有帮助。

【讨论】:

    猜你喜欢
    • 2022-06-17
    • 1970-01-01
    • 2015-04-30
    • 2016-10-14
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 2012-02-18
    • 2019-06-22
    相关资源
    最近更新 更多