【发布时间】:2017-11-08 15:44:02
【问题描述】:
我有一个很简单的问题,但我就是不知道为什么我的帖子不起作用。我过去做了很多,这就是为什么我不知道错误在哪里。请帮助我,这是我的 AJAX 代码:
$(function() {
$("#btnSubmit").click(function(event) {
event.preventDefault();
var formData = $("formCI").serialize();
$.ajax({
type : "POST",
url : "formularioServer.php",
data : formData,
datatype : "json",
async : false
})
.done(function(data) {
if(data != "success"){
console.log(data);
} else {
alert("A ticket has been sent with your incident information to the CI-Hotline inbox");
window.location = "formulario.php";
console.log(data);
}
});
});
});
我的部分 HTML:<form name="formCI" id="formCI" action="formularioServer.php" method="POST" enctype="multipart/form-data" accept-charset="utf-8">
<button type="submit" name="btSubmit" id="btnSubmit" class="btn btn-default">
在服务器端,POST 总是带有错误消息:
<?php
if(!empty($_POST)) {
echo "success";
} else {
echo "failed";
}
?>
【问题讨论】:
-
一目了然,您的问题可能出在 .serialize() 中,而且您将数据类型设置为 json 的事实,AFAIK .serialize() 与 JSON.strigify( )。 .serialize() 创建一个 URL 编码的字符串,如果我错了,请纠正我。我会从那里开始。
-
你能扩展
parts of your html吗?里面有输入框吗?如果它只有提交按钮,则该元素将不会通过 POST,因为您在单击事件上触发 ajax(不提交表单)。 -
@AntoniuLivadariu
datatype指的是 ajax 期望返回的内容。不是它发送的内容。 -
您好,我的 HTML 有一个包含多个字段的标准表单,但我无法显示。
-
@Randall 哈哈抱歉我的大脑死了一秒钟,我将它与 contentType 混淆了,我仍然认为问题出在 .serialize() 上:c 另外,不应该是
dataType吗?