我有一个 php 文件,左侧有很多复选框。我通过 javscript 提取值并将它们传递到数组中。哪个工作得很好。然后我想通过 Ajax 将这个数组传递给 PHP,以便弄乱这些值并从中创建 SQL 语句。
$(document).ready(function(e) {
$('#getSelectedValues').click(function() {
var chkBoxArray = [];
$('.graphselectors:checked').each(function() {
chkBoxArray.push($(this).val());
});
for (var i = 0; i < chkBoxArray.length; i++) {
console.log(i + " = " + chkBoxArray[i]);
}
$.ajax({
url: 'index.php', // (1)
type: 'POST',
dataType:'json',
data: chkBoxArray, //(2)
success: function(data){
console.log(data.length);
console.log(data);
}
});
});
});
几个问题: (1) 我需要在这里添加什么文件名?起源还是目标? (2) 我有很多方法:序列化,使用括号 {},等等。如何正确完成?
我得到的错误如下:
Notice: Undefined index: data in graph.php
这让我有点疑惑,因为它清楚地表明没有数据正在发送。
$_POST 和 $_SERVER 上的 var_dumps 提供这些结果:
array(0) { }
array(0) { }
有点不满意。
我哪里做错了?唯一令人困惑的方面是 ajax,所有其他方面都不是什么大问题。
该站点应该以下列方式工作: 页面 -> 复选框(点击) -> 按钮 -> 结果 (ajax) -> PHP 获取结果 -> SQL DB -> PHP 获取数据库结果 -> 获取结果 (ajax) -> jslibrary 使用结果。
最佳答案
1- 您需要将 ajax 指向将使用您发送的数据的脚本。我不建议指向 index.php
,因为您需要添加一个 if 语句来检查 $_POST
上是否有数据,这正是您想要的期待,否则它将返回您所在的同一页面(考虑到您在 index.php
中并且正在向 index.php
发出请求)。需要考虑的一点。由于它是一个完整的请求,并且它不是方法调用 以实际将某些内容返回到您的页面,因此您需要echo
内容。也就是说,还可以考虑设置 header('Content-Type: application/json')
然后,因为您期望 dataType: 'json'
, echo json_encode($objectorarray);
2- 由于您要向 PHP 发送 Javascript 数组,它无法正确解释结构,这就是为什么您应该在发送之前使用 JSON.stringify(chkBoxArray)
。但是只要在 data
属性上设置它就会将您选择的复选框的数量作为值发送到 POST
,因此请考虑 data: {myCheckboxValues: JSON.stringify(chkBoxArray )}
在您的 PHP 脚本中,考虑到要采取的所有安全措施,您可以 $foo = json_decode($_POST['myCheckboxValues']);
关于javascript - PHP、Javascript、Ajax 和获取结果方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31637730/