我想通过jQuery的.ajax()在我的网站上提交一个包含textarea字段和输入字段(type =“checkbox”,具有任意/可变数目的复选框)的POST表单。 PHP接收到textarea数据,并且ajax响应正确显示给用户。但是,似乎PHP没有收到复选框数据(是否检查)。我该如何让这个工作?这是我的代码:
HTML:
...(maybe some more checkboxes - dynamically generated as necessary)
jQuery:
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);
一切都很好:当表单提交时,我的数据库中存储了一个新的记录,响应将被返回到网页,但不会发送复选框数据。我想知道哪个复选框已经被检查了,如果有的话。我已经阅读了.serialize(),JSON等,但没有一个这样工作。我必须在jQuery和PHP中序列化/ JSON吗?怎么样?使用复选框发送表单数据时,一种方法比另一种更好吗?我已经被困在这2天了。任何帮助将不胜感激。提前感谢!