[英]Unable to post Javascript array via jQuery ajax
我非常不愿意提出这个问题,因为我知道这确实是我所缺少的愚蠢之举,但是我根本无法解决这个问题。 代码如下:
<script>
var formArray = new Array();
formArray['start'] = "one";
formArray['stopat'] = "two";
formArray['stop_at'] = "three";
$('#my_button').click(function() {
$.ajax({
type: "POST",
url: "scheduler.php",
data: formArray,
success: function(response){
console.log(response);
}
});
});
</script>
服务器端PHP脚本scheduler.php
<?php
print_r($_POST);
?>
我重新登录到控制台的所有内容都是一个空数组:
Array
(
)
如果我在click函数中使用console.log formArray
,它将显示完整的数组。 那么为什么不将其发布到我的PHP文件中呢?
提前致谢
将Array()
更改为Object()
也可以。
您将获得:
Array
(
[start] => one
[stopat] => two
[stop_at] => three
)
您正在将字符串属性添加到用于存储数字索引的数组。
改用一个对象:
var formArray = {};
formArray['start'] = "one";
formArray['stopat'] = "two";
formArray['stop_at'] = "three";
jQuery将使用for (var i = 0; i < formArray.length; ++i)
循环遍历数组中的索引,这将完全丢失您添加到数组中的所有属性。
另外, new Array
应该是[]
(因为{}
应该比new Object
更可取)。 不要对内置类型使用new X
初始化方法。 (克罗福德,好零件)
JavaScript数组设计为使用整数键保存项目的有序序列。 当jQuery将数据结构转换为Form URL Encoded数据并遇到数组时,它将遍历那些整数键而不是命名键。
如果要命名键,请使用对象 。
将new Array()
更改为newObject()
像这样编辑您的Ajax,看看它是否有效: data: {data: formArray}, dataType: 'JSON'
$.ajax({
type: "POST",
url: "scheduler.php",
data: {data : formArray},
dataType: 'JSON'
success: function(response){
console.log(response);
}
});
PHP:
print_r($_POST['data']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.