Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';t检索从jQuery发布的数据_Php_Jquery_Forms_Post - Fatal编程技术网

Php Can';t检索从jQuery发布的数据

Php Can';t检索从jQuery发布的数据,php,jquery,forms,post,Php,Jquery,Forms,Post,我有一个带有单选按钮和复选框的表单,希望检索选中的是哪一个。表单使用jQuery提交,信息存储在两个变量(targets和diff)中。然后使用$.ajax()发布这些变量 我的问题:Firebug告诉我它们已经发布了,但我似乎无法使用$\u POST检索它们。实际上,$\u POST返回旧数据。我尝试取消设置($\u POST)并删除浏览器缓存,但没有任何效果。我能做什么 非常感谢你的帮助 submit.js: $(document).ready(function () { alert('s

我有一个带有单选按钮和复选框的表单,希望检索选中的是哪一个。表单使用jQuery提交,信息存储在两个变量(targets和diff)中。然后使用$.ajax()发布这些变量

我的问题:Firebug告诉我它们已经发布了,但我似乎无法使用$\u POST检索它们。实际上,$\u POST返回旧数据。我尝试取消设置($\u POST)并删除浏览器缓存,但没有任何效果。我能做什么

非常感谢你的帮助

submit.js:

$(document).ready(function () { 
alert('start');
    $('#right').on('submit', 'form', function(event) {
        var checkboxes = new Array();
        $('input[name=target]:checked').each(function(){
            checkboxes.push($(this).val());
        });
        var radio = $('input[name=diff]:radio:checked').val();
        $.ajax({
            url: 'index.php',
            type: 'post',
            data: {'targets': checkboxes, 'diffs': radio},
            success: function() {
                alert("success"); }
        });
    return false;
    });
});
index.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 
if(isset($_POST['targets'])){
    $targets = $_POST['targets'];
    echo "targets set";
}

if(isset($_POST['diffs'])){
    $diffs = $_POST['diffs'];
    echo "diffs set";
}
?>

<div id="right">
    <div class="content">
        <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
            <input type="checkbox" name="target" value="Check1">Check1
            <input type="checkbox" name="target" value="Check2">Check2
            <input type="checkbox" name="target" value="Check3">Check3

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

</body>
</html>

请尝试以下方法:

$(document).ready(function () { 
    $('#right form').on('submit', function(event) {
        event.preventDefault();
        var checkboxes = $.map($('input[name=target]:checked'), function(el,i){
            return el.value;
        });
        var radio = $('input[name=diff]:radio:checked').val();
        $.ajax({
            url: 'index.php',
            type: 'POST',
            data: {targets: checkboxes, diffs: radio}
        }).done(function(data) {
            alert(data);
            $('#content').html(data);
        }):
    });
});

您使用ajax提交表单,但没有捕获返回的数据?您希望echo做什么?另外,您有语法错误,success函数没有关闭,因此表单可能以常规方式提交。我尝试使用$\u POST捕获返回的数据。。。如何正确完成回声只是为了告诉我它是否有效发生语法错误是因为我在这里发布之前删除了一些内容,这不是问题,现已修复。而且,#right确实包含表单,因此表单确实提交。我可以在firebug中看到提交的值。我就是找不到可以用来拍照的好东西!还有一件事:这会提醒我要查看的站点的HTML代码。如何在浏览器中而不是在警报框中输出它?@eevaa-使用jQuery中的标准DOM操作方法,如append()、prepend()、html()等。请参阅编辑的答案,该答案将用返回的数据替换内容中的所有内容。