Ajax没有将值传递给php文件

时间:2014-08-20 13:21:58

标签: php jquery mysql ajax

我一直在努力解决这个问题 - 任何帮助都将不胜感激!我在表单中有一长串复选框。最多的是,让我们说我的HTML是:

<form name="SelectCategories" method="post">
    <input type="checkbox" name="category[A]" value="A" id="A" /><label for="A">A</label>
    <input type="checkbox" name="category[B]" value="B" id="B" /><label for="B">B</label>
    <input type="checkbox" name="category[C]" value="C" id="C" /><label for="C">C</label>
    <input type="submit" value="Submit" id="submit">
</form>

<div id="display">Select something</div>

我有一些PHP:

<?php 
error_reporting(0);
$categoriesarray=implode(',',$_POST['category']);
echo $categoriesarray;
?>

然后我有一些JQuery,将categoriesarray转移到php页面。 (出于某种原因,当粘贴JQuery时,上面的回声并不总是有效,但有时会这样做。)

$(document).ready(function(){
    $("form").on("submit", function(e){
        e.preventDefault();
        $ajax.({url:"Data.php", type:"POST", data:{data1 : '<?php echo $categoriesarray; ?'>}, success: function(result){
            $("#display").html(result);
        }});
    });
}) 

最后,我的Data.php文件(忽略所有密码)是:

    <?php
    $list= $_POST['data1'];
    $cxn=mysqli_connect($host, $username, $password, $database)
    or die("Not connected");
    $query = "SELECT * FROM table WHERE 1 in ($list) ORDER BY RAND() LIMIT 10";
    $result = mysqli_query($cxn,$query)
    or die("Select something");
    while($row = mysqli_fetch_assoc($result)){
        echo $row['columnname'];

    }
?>

这个想法是它抽出10个随机数据库条目,其值为&#34; 1&#34;在选中的类别中。但是,我只能选择&#34;选择一些东西&#34;在我的显示div中返回。

奇怪的是,如果我删除html页面上的内容,刷新html页面,重新放入代码并再次刷新,整个过程完美无瑕。但如果我通过地址栏连接到页面 - 而不是刷新 - 我只是选择&#34;选择一些东西&#34;我按下提交时返回,而不是数据库中的数据。

任何想法出了什么问题?!

1 个答案:

答案 0 :(得分:1)

很难理解这里到底做了什么,但有些事情需要考虑:

<?php 
error_reporting(0);
$categoriesarray=implode(',',$_POST['category']);
echo $categoriesarray;
?>

你在这个阶段发帖了吗?

$(document).ready(function(){
$("form").on("submit", function(e){
e.preventDefault();
$ajax.({url:"Data.php", type:"POST", data:{data1 : '<?php echo 
$categoriesarray; ?'>}, success: function(result){
$("#display").html(result);
}});
});
})

使用这个AJAX,你将PHP回显直接放入它发送的对象中。你应该收集用户勾选的复选框,不是吗?

类似的东西:

$("form").on("submit", function(e){
var data = $( "form" ).serialize();
e.preventDefault();
$ajax.({url:"Data.php", type:"POST", data: data}, success: function(result){
$("#display").html(result);
}});
});

现在,您正在使用PHP获取一个数组,您可以使用它来获取相关数据。 一般来说,你只想做类别[]并让它自己解决。

如果您认为我误解了您的意图,我会道歉,但我无法理解它。