我很确定我遇到的问题与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)
答案 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)
您的代码中存在两个问题:
name
的{{1}}属性的输入,并且在html中您有一个名为platform
的数组输入。因此,它找不到任何匹配的输入,这就是platform[]
为var platform_var
或undefined
的原因。null
添加到选择器,否则jQuery将返回所有复选框,无论其复选框状态如何。要解决此问题,只需更改
即可: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']