gpt4 book ai didi

javascript - 通过 jQuery Ajax 将 JavaScript 数组发送到 PHP 数组

转载 作者:行者123 更新时间:2023-11-30 10:12:34 24 4
gpt4 key购买 nike

我正在尝试通过 jQuery Ajax 将 JavaScript 数组发送到新的 PHP 数组:

var heart = [31,32,33,34,35,36,37,38,39,42,43];

$('#find_btn').click(function(){
$.ajax({
type: "POST",
url: 'scripts/get_specimens_system.php',
data: {
system: heart,
},
success: function(data) {
$('#search_list_container').html(data);
}
});
});

在 PHP 脚本中,我在 MySQL 查询之前有以下内容:

$system = array($_POST['system']);

如果我在 heart 中对数据进行硬编码,例如:

$system = array(31,32,33,34,35,36,37,38,39,42,43);

查询正常。我做错了什么?

为了简化问题,我忽略了一个事实,即我通过 system = $(this).attr('data-系统');

其中数据系统设置为如下数组:

$('#sub_category_box_systems').html("<a class='sub_category_link' href='#' data-subcat-type='system' data-system='" + brain + "'>Brain</a><br /><hr><a class='sub_category_link' href='#' data-subcat-type='system' data-system='" + nerves + "'>Nerves</a><br /><hr><a class='sub_category_link' href='#' data-subcat-type='system' data-system='" + cerebellum + "'>Cerebellum</a>");

现在,如果我在 AJAX 语句之前警告 system,警告会显示整数正常。

$('#sub_category_box_systems').on('click', '.sub_category_link', function() {
system = $(this).attr('data-system');
});


$('#find_btn').click(function(){
alert(system);
$.ajax({
type: "POST",
url: 'scripts/get_specimens_system.php',
data: {
system: system,
},
success: function(data) {
}
});
});

并且我已将 PHP 文件更新为:

$system = $_POST['system'];

仍然不行,但如果我将 var system 与数组的实际 var(例如,heart)交换,作为 Ajax 数据,它就可以工作。那么这里出了什么问题? (抱歉更改此 OP...)。

奇怪,如果我将 var system 更改为如下所示的特定数组,它就可以工作,所以使用 jQuery .attr('data-system') 的格式一定有问题;

$('#sub_category_box_systems').on('click', '.sub_category_link', function() {
system = heart;
});

最佳答案

默认情况下,jQuery $.ajax 会将您的请求作为表单数据提交。如果在发送请求时打开浏览器调试器,您将看到以下请求数据:

system[]:31
system[]:32
system[]:33
system[]:34
system[]:35
system[]:36
system[]:37
system[]:38
system[]:39
system[]:42
system[]:43

PHP 知道这是一个数组,并默认将其作为数组读入。 您不应将其包装在 array() 标记中。

您可以将数组分配给您自己的变量:$system = $_POST['system'];

但是,您的工作还没有完成。 $system 现在是一个字符串数组。这是 $systemvar_dump:

array(11) {
[0]=>
string(2) "31"
[1]=>
string(2) "32"
[2]=>
string(2) "33"
[3]=>
string(2) "34"
[4]=>
string(2) "35"
[5]=>
string(2) "36"
[6]=>
string(2) "37"
[7]=>
string(2) "38"
[8]=>
string(2) "39"
[9]=>
string(2) "42"
[10]=>
string(2) "43"
}

使用它把它转换成一个整数数组:

$system = array_map('intval', $system);

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com