2017-04-14 82 views
0

我看过这么多帖子aboit这个,但仍然不能让我的代码工作。jQuery的阵列发送由AJAX到PHP

我想获得一个php数组,我的选中复选框的值。

继承人我的代码:

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> 

<title>Untitled Document</title> 

</head> 

<body> 

<?php 


echo'<form method="post"> 
<input type="checkbox" name="cim" value="valami">'; 
echo'<input type="checkbox" name="cim" value="valami2">'; 
echo'<input type="checkbox" name="cim" value="valami3">'; 
echo'<input type="checkbox" name="cim" value="valami4"> 
<input type="submit" value="Felvisz" name="feladat"></form>'; 

if (isset($_POST['feladat'])) { 

?> 
<script type="text/javascript"> 

var checkedValue = $('.messageCheckbox:checked').val(); 

var myJSON = JSON.stringify(checkedValue); 

$.ajax({   
     type: "POST", 
     url: "proba.php", 
     data: { tomb : myJSON }, 
     success: function(){ 
alert("OK"); 
} 
    }); 

</script> 

<?php 

var_dump($_POST); 

$array = json_decode(stripslashes($_POST['tomb'])); 
foreach($array as $arr){ 
    echo $arr; 
} 

} 
?> 

</body> 
</html> 

按摩我得到: 注意:未定义指数:墓在d:\ programok \ XAMP \ htdocs中\ SZAKDOGA \ Dropbox的\上线proba.php 48

警告:提供的无效参数为foreach()D:\ programok \ xamp \ htdocs \ SZAKDOGA \ Dropbox \ proba.php在线49

请有人可以帮我解决这个问题吗?

+0

'json_decode'在这里是不必要的。 ajax将以数组对象的形式发送数据。只获取您需要测试它们的“已选中”复选框的值。您目前没有将您正在测试复选框的课程分配到 – bowl0stu

+0

中的任何一个框,以更好地使用它? (函数(){返回$(this).val();})。get();返回值是一个数组,其值为0。 –

回答

2

要得到一个数组,你必须转换名接受多个这样改变输入的:

name="cim" 

name="cim[]" 

而且你的jQuery AJAX功能应该是这样的:

<script type="text/javascript"> 
$(function(){ 

$("form").on("submit",function(e){ 
e.preventDefault(); 
var checkedValue = $(this).serialize(); 

$.ajax({   
     type: "POST", 
     url: "proba.php", 
     data: checkedValue, 
     success: function(){ 
    alert("OK"); 
    } 

});//end ajax 


});//end form submit 
}); 
</script> 

在php中cim将会是数组的例子

var_dump($_POST["cim"]); 

希望它有助于

0

目前,你对托运箱与messageChecked一流的检测。如果做这样的分配您的复选框阶级,给您的形式id,然后测试每个复选框选中状态,

$('#yourForm').each(function() { 
    if($('.messageChecked').is(':checked')) { 
     checkedValue.push($('.messageChecked:checked').val()); 
    } 
} 
现在

发送到通过AJAX你的PHP脚本,

$.ajax({   
    type: "POST", 
    url: "proba.php", 
    data: { tomb : (checkedValue) }, 
    success: function(){ 
     alert("OK"); 
    } 
}); 

你可以从您的$_POST声明中删除json_decodestripslashes