0

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

这些变量也需要在 PHP 中可用。我尝试以多种方式将它们作为ftarfdiff传递,但没有任何效果。

任何帮助深表感谢!

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>
4

3 回答 3

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)`
于 2013-06-14T17:03:56.407 回答
1

你应该使用

JSON.stringify

$.post('index.php', JSON.stringify({ftar: target, fdiff: diff}));
于 2013-06-14T17:01:50.803 回答
0

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

于 2013-06-18T12:27:17.403 回答