javascript - 通过ajax发送数组的问题

标签 javascript

您好 stackoverflow 社区,我需要有关 JavaScript 的帮助。如何传输 id 为 kasce 的数组?

当我在 ajax_import.php 文件中打印数组时,它什么也不打印。所以我的数组可能是空的。

这是我的代码:

function SubmitImp() {
    var import_tasken = document.getElementById("import_tasken");
    //import_tasken.style.display = "none";
    var kasce = document.getElementsByName("impTaskCh");
    var array = "";
    for (i = 0; i < kasce.length; i++) {
        array[i] = kasce[i].getAttribute('id');
    }
    $.ajax({
        type: "POST",
        url: 'modules/projects/ajax/ajax_import.php',
        data: {
            data: array,
        },
        success: function(data)
        {
            alert("Viskas ok!");
        }
    });
}

最佳答案

有几个问题。

首先,您发送的不是一个数组,而是一个空白字符串。在这里,您将一个字符串放入 array 中:

var array = "";

稍后,您可以执行以下操作:

array[i] = kasce[i].getAttribute('id');

...它试图为字符串的单个字符分配一个新值。你不能这样做,字符串在 JavaScript 中是不可变的;该行最终根本没有改变字符串。

array[i] 是字符串中的单个字符。您正在尝试为其分配一个字符串。

要使 array 成为数组,请使用:

var array = [];

接下来,这可能不是问题,在这里:

data: {
    data: array,
}

...您告诉 jQuery 发送一个名为 data 的 URI 编码参数,其值为 array。 jQuery 将在 array 上调用 toString,真正的数组最终会成为 Array#join。这很可能就是您想要的,您会得到这样的结果:

firstId,secondId,thirdId

您的 PHP 应该将其查找为 $_POST['data']


旁注:您正在成为 The Horror of Implicit Globals 的牺牲品因为你从未声明你的 i 变量。您想要声明它。

关于javascript - 通过ajax发送数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32134812/

相关文章:

javascript - 尝试将 MaskRe 设置为接受空间?

javascript - 如何将同一份文档打印到多台打印机

javascript - 达到 IF 条件后停止函数

javascript - 在 AngularJS 中在运行时加载 JavaScript

javascript - 调用 Hcaptcha 回调函数的问题

javascript - 无法滚动伪滚动条

asp.net - 单击后退按钮强制刷新页面

javascript - 如何移动除了数组Javascript中的第一个元素之外的位置?

javascript - 在 react 中更新状态或父组件

javascript - 在 PHPStorm 的 Javascript 中使用 Smarty