使用$ .post将变量从JQuery传递到PHP

时间:2013-06-14 16:55:06

标签: jquery forms

我有一个表单(#searchform),我想多次提交而不重新加载页面,所以我使用jQuery和post-method。我想存储在名为 target (数组,列表或其他)的变量中检查哪些复选框,以及在变量 diff 中选择了哪个单选按钮。

变量也需要在PHP中可用。我尝试在很多方面将它们作为 ftar fdiff 传递,但没有任何效果。

非常感谢任何帮助!

submit.js中的JQuery:

$(document).ready(function () {
    var target = new Array();
    $('#searchform input:checked').each(function() {
        target.push($(this).attr('value'));
    });

    var diff = $('#searchform').find("input[class='diff']").val();

    $.post('index.php', {ftar: target, fdiff: diff});
});

index.php中的HTML和PHP:

<!DOCTYPE html>
<html lang="en-US">
<head>
    <title></title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    <script src="js/submit.js"></script>
</head>

<body>

<?php 

    ini_set('display_errors',1); 
    error_reporting(E_ALL);
    $link = new mysqli("localhost", "root", "password", "mytable");

    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $target = $_POST['ftar'];
    $diff = $_POST['fdiff'];
?>

<div id="right">
    <div class="content">
        <form id="searchform" method="POST" action="/">
            <input type="checkbox" value="Check1">
            <input type="checkbox" value="Check2">
            <input type="checkbox" value="Check3">

            <input type="radio" class="diff" value="Radio1">
            <input type="radio" class="diff" value="Radio2">
        </form>
    </div>
</div>

</body>
</html>

3 个答案:

答案 0 :(得分:1)

你应该使用

JSON.stringify

$.post('index.php', JSON.stringify({ftar: target, fdiff: diff}));

答案 1 :(得分:1)

您是否尝试过使用$(#searchform).serialize();?

$.post('index.php', $(#searchform).serialize());

您还应该在表单

中为字段添加名称
<form id="searchform" method="POST" action="/">
        <input name="check[]" type="checkbox" value="Check1">
        <input name="check[]" type="checkbox" value="Check2">
        <input name="check[]" type="checkbox" value="Check3">

        <input name="radio[]" type="radio" class="diff" value="Radio1">
        <input name="radio[]" type="radio" class="diff" value="Radio2">
    </form>

将字段作为数组获取(仅传递标记的字段)

    $target = $_POST['check'];
print_r($target)
$target = $_POST['radio'];
print_r($target)`

答案 2 :(得分:0)

你应该根据html输入添加name =“ftar”和name =“fdiff”。然后序列化,JSON.stringify()或只提交。