请考虑以下事项:
PHP:
<form id="f-submit" method="post" action="">
<button class="btn-submit" name="update" type="submit">APPROUVE</button>
</form>
jQuery的:
$("button.btn-submit").click(function(event) {
event.preventDefault();
var formData = $("#f-submit").serializeArray();
formData.push({actiontype: "delete"});
$.ajax({
type: "POST",
url: "includes/submit_comment.php",
data: formData
}).done(function(data) {
alert(data);
}).fail(function(data) {
alert('Ajax failed.');
});
});
submit_comment.php:
if (isset($_POST['actiontype'])) {
echo 'found';
} else {
echo 'not found';
}
出于某种原因,我总是'找不到'。
但是,当我在没有序列化的情况下发送数据时,就像这样,
var formData = ({actiontype: "delete"});
它有效!!!
所以问题必须在serializeArray()上,但它是什么?我真的疯了这个......
答案 0 :(得分:1)
尝试这种语法:
formData.push({name: 'actiontype', value: delete});
答案 1 :(得分:0)
serializeArray()
生成一个由名称和值组成的对象。
您是否尝试过调试var formData = $("#f-submit").serializeArray();
?在你的情况下,它不应该产生名称/值对,因为:
仅将“成功控件”序列化为字符串。没有提交按钮值被序列化,因为表单未使用按钮提交。要使表单元素的值包含在序列化字符串中,该元素必须具有name属性。文件选择元素中的数据未序列化。 jQuery doc
因此,您必须从提交中添加不同的输入。我们来看看这个智能解决方案:jQuery serializeArray doesn't include the submit button that was clicked