我想通过jQuery的.ajax()提交一个包含文本区域和输入字段(类型为“checkbox”,带有任意/可变数量的复选框)的POST表单到我的网站。PHP接收文本区域数据并正确显示ajax响应给用户。但是,似乎PHP没有接收到复选框数据(它是否被选中)。我该如何使其工作?这是我拥有的代码:
HTML代码:
<form method="post" action="myurl.php" id=myForm>
<textarea id="myField" type="text" name="myField"></textarea>
<input type="checkbox" name="myCheckboxes[]" id="myCheckboxes" value="someValue1" />
<input type="checkbox" name="myCheckboxes[]" id="myCheckboxes" value="someValue2" />
...(maybe some more checkboxes - dynamically generated as necessary)
<input id="submit" type="submit" name="submit" value="Submit" onclick="submitForm()" />
</form>
jQuery是一个JavaScript库。function submitForm() {
$(document).ready(function() {
$("form#myForm").submit(function() {
var myCheckboxes = new Array();
$("input:checked").each(function() {
myCheckboxes.push($(this).val());
});
$.ajax({
type: "POST",
url: "myurl.php",
dataType: 'html',
data: { myField:$("textarea[name=myField]").val(),
myCheckboxes:myCheckboxes },
success: function(data){
$('#myResponse').html(data)
}
});
return false;
});
});
现在,PHP
$myField = htmlspecialchars( $_POST['myField'] ) );
if( isset( $_POST['myCheckboxes'] ) )
{
for ( $i=0; $i < count( $_POST['myCheckboxes'] ); $i++ )
{
// do some stuff, save to database, etc.
}
}
// create the response
$response = 'an HTML response';
$response = stripslashes($response);
echo($response);
一切都很顺利:当表单提交时,一个新的记录被存储在我的数据库中,响应已经通过ajax返回到网页,但是复选框数据没有被发送。我想知道哪些复选框已经被选中。我已经阅读了.serialize()、JSON等内容,但是这些都没有起作用。我需要在jQuery和PHP中进行序列化/JSON吗?如何操作?在使用复选框发送表单数据时,是否有一种更好的方法?我已经困扰了2天。非常感谢任何帮助!提前感谢!