2017-04-14 80 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