jQuery AJAX POST;不张贴

时间:2014-02-04 23:30:55

标签: javascript php jquery ajax post

我很确定我遇到的问题与jQuery的$.ajax({...});函数有关。在PHP中打印数组时,我得到Notice: Undefined index

如果我能在这里得到一些建议,我真的很感激。

<script>
$(document).ready(function(){
    $("#submit").click(function() {
         var platform_var =  $('input[name="platform"]').val();
         var bandwidth_var = $("#bandwidth-widget").val();
         alert(bandwidth_var); // Returns the array as an alert.
         $.ajax({
            url:    "index.php",
            type:   "POST",
            data:   {
                        platform_var: platform_var,
                        bandwidth_var: bandwidth_var
                        }
        });
    });
});
</script>

<?php 
print_r($_POST['platform_var']);
?>

Demo(没有PHP)

2 个答案:

答案 0 :(得分:2)

您需要将值分配给文档加载上的变量。

$(document).ready(function() {
  platform_var =  $('input[name="platform"]').val();
  bandwidth_var = $("#bandwidth-widget").val();
});

编辑:如果在文档加载时没有实现值,则需要在实际具有正确值时分配它们,就在执行Ajax请求之前。

$(document).on('submit', '#compare', function(e) {
     var platform_var =  $('input[name="platform"]').val();
     var bandwidth_var = $("#bandwidth-widget").val();
     $.ajax({
        url: $(this).attr('action'),
        type: $(this).attr('method'),
        data: {
                    platform: platform_var,
                    bandwidth: bandwidth_var
                }
    });
});

目前,您在实际存在值之前分配它们。

希望这有帮助。

答案 1 :(得分:1)

您的代码中存在两个问题:

  1. 选择器错误 - 您正在搜索具有等于name的{​​{1}}属性的输入,并且在html中您有一个名为platform的数组输入。因此,它找不到任何匹配的输入,这就是platform[]var platform_varundefined的原因。
  2. 要获取选中的复选框,您需要将null添加到选择器,否则jQuery将返回所有复选框,无论其复选框状态如何。
  3. 要解决此问题,只需更改

    即可
    :checked

    var platform_var =  $('input[name="platform"]').val();
    

    另外,请记住,在您的php脚本中,var platform_var = $('input[name="platform[]"]:checked').map(function(){return $(this).val();}).get(); 变量将是一个数组。

    我建议您查看jQuery API documentation以进一步了解选择器的工作原理。

    以下是经过编辑的fiddle

    编辑: 我在下面添加的代码确认小提琴中的代码工作正常。显然你在使用自己的PHP代码而不是JavaScript时遇到了麻烦。 我相信你应该坐下来查看你的代码。

    $_POST['platform']