2017-04-14 5 views
0

Ich sah so viele Post-Aboit dies aber immer noch kann nicht meinen Code zu arbeiten.Jquery Array senden von AJAX zu PHP

Ich möchte ein PHP-Array meiner Checkboxes Werte erhalten.

her mein Code:

<!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> 

Massagen ich erhielt: Notice: Undefined index: Grab in D: \ programok \ xamp \ htdocs \ SZAKDOGA \ Dropbox \ proba.php auf der Leitung 48

Warnung: Ungültiges Argument für foreach() in D: \ programok \ xamp \ htdocs \ SZAKDOGA \ Dropbox \ proba.php in Zeile 49

Bitte jemand kann mir helfen, dies zu lösen?

+0

entfernen, 'json_decode' ist hier nicht notwendig. Ajax sendet Daten als Array-Objekt. Um nur die Werte von "Checked" Checkboxen zu erhalten, müssen Sie diese testen. Sie haben derzeit nicht die Klasse, die Sie testen die Kontrollkästchen mit einer der Boxen zugewiesen – bowl0stu

+0

besser mit diesem? var values ​​= $ ("input [name = 'cim']") .map (funktion() {return $ (this) .val();}). Get(); –

Antwort

2

ein Array zu erhalten, können Sie den Namen mehr so ​​die die Eingabe ändern zu akzeptieren konvertieren müssen:

name="cim" 

zu

name="cim[]" 

Auch sollte Ihre jquery ajax Funktion sein:

<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> 

in PHP wird das cim das Array Beispiel

sein

hoffen, dass es

0

hilft zur Zeit, die Sie für kreuzte Kästchen mit Klasse messageChecked testen. zuweisen Ihrer Kontrollkästchen diese Klasse, geben Sie Ihr Formular ein id, dann Test für aufgegebene Bedingung für jedes Kontrollkästchen,

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

jetzt es zu einem PHP-Skript über Ajax senden,

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

wie dies geschehen, wenn Sie kann json_decode und stripslashes von Ihrer $_POST Anweisung