我想通过jQuery的.ajax()在我的网站上提交一个包含textarea字段和输入字段(type =“checkBox”,具有任意/可变数目的复选框)的POST表单。 PHP接收到textarea数据,并且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:
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天了。任何帮助将不胜感激。提前感谢!