检索AJAX发布的每个变量

时间:2015-03-26 10:29:24

标签: javascript php jquery mysql ajax

我将checkbox选项存储在一个数组中然后拆分每个数组并使用AJAX发布它们,以便我的PHP函数可以使用发布的id/ids来查询我的MySQL数据库中。

我的JavaScript的第一部分

$('#tbl_list').click(function (event) {
    var tbls = new Array();
    $("input:checkbox[name='tbl[]']:checked").each(function () {
        tbls.push($(this).val());
    });
    var tbl = tbls.join('|');
    alert(tbl);

这第一部分按预期工作,每当我点击checkbox时,该值都会被警告。

AJAX帖子

 $.ajax({
        type: "POST",
        url: "index.php",
        data: "tbl=" + tbl
    });
});

最后我的PHP

    function describeTables() {
                if (isset ( $_POST ['tbl'] )) {

                    $tbl = $_POST ['tbl'];
                    echo $tbl;

}}

即使我只选择一个选项,我也不会获得tbl的任何声明。这是为什么????

修改 我的复选框

function showTables() {
        if (isset ( $_GET ['db'] )) {
            $db = $_GET ['db'];
            $link = mysqli_connect ( 'localhost', 'root', '', $db );

            $qry = "SHOW tables";
            $tbl_list = mysqli_query ( $link, $qry );
            echo '<ul>';
            while ( $row = mysqli_fetch_array ( $tbl_list ) ) {
                echo '<input type="checkbox" name="tbl[]" class="tbl_list"   value="' . $row [0] . '" class="tablebox" />';
                echo $row [0];
                echo '<br>';
            }
        }
    }
    showTables ();

第二次编辑

建议后我修改了我的代码,但现在有一个新问题,页面无法加载#dbdisplay下面是我的完整JS代码

if (!location.search.match(/db=[^&#]+/i)) {
    $("#dbdisplay").show();
} else {
    $("#qryDisplay").show();
}

$(document).on("change", ".checkbox", function () {
    var db = $(this).val();
    window.sessionStorage.setItem("db", db);
    window.location.assign("index.php?db=" + db);
    $("#dbdisplay").hide();
});

$('#tbl_list').click(function (event) {
    var tbls = new Array();
    $("input:checkbox[name='tbl[]']:checked").each(function () {
        tbls.push($(this).val());
    });
    var tbl = tbls.join('|');
    //alert(tbl);

    $.ajax({
        type: "POST",
        url: "index.php",
        data:  {'tbl': tbl }
    });
});

旧功能

 /*
    $(document).on("change", ".tablebox", function () {
        var tbls = new Array();
        $("input:checkbox[name='tbl[]']:checked").each(function () {
            tbls.push($(this).val());
        });
        var tbl = tbls.join('|');
        var yourDB = window.sessionStorage.getItem("db");
        window.location.assign("index.php?db=" + yourDB + '&tbl=' + tbl);
    });
    */

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

在ajax调用中,数据必须是对象data: {'tbl': tbl}

答案 1 :(得分:0)

您应该将“{}”用于数据

$.ajax({
    type: "POST",
    url: "index.php",
    data: {'tbl' : tbl}
 });

 $.ajax({
     type: "POST",
     url: "index.php&tbl="+tbl
  });

答案 2 :(得分:0)

你的ajax调用中的第一件事,数据必须是对象

data: {'tbl': tbl}

其次Ajax不能直接调用php函数 所以你的index.php文件应该没有函数

 if (isset ( $_POST ['tbl'] )) {
    $tbl = $_POST ['tbl'];
    echo $tbl;
 }

答案 3 :(得分:0)

这应该是工作

$.ajax({
    type: "POST",
    url: "someurl",
    data: {"tbl=" + tbl}
 });

http://api.jquery.com/jquery.getjson/

请参阅此处了解文档