javascript - PHP、Javascript、Ajax 和获取结果方面

标签 javascript php jquery ajax

我有一个 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/

相关文章:

php - 如何将 CSS 字体样式添加到 PHP echos?

php - Codeigniter 图片上传忽略允许的类型和文件大小

javascript - 使用 Javascript 在文本框中显示消息

javascript - 如何使用 Skrollr.js 实现多视差滚动

javascript - 使用事件克隆 Eonasdan DateTimePicker

javascript - 如何使用地理定位获取访问者的位置(即国家/地区)?

javascript - 用于匹配 package.json 内容中的模块的正则表达式

javascript - 将字符串转换为数组(不是你想的那样)

javascript - 使用 Javascript 从 HTML 获取标签内的内容

PHP MySQL 结果返回双倍值