我正在尝试使用POST表单和AJAX将图像上传到我的服务器。但每次我提交表单时,我的AJAX都会在错误框中返回undefined
。这是我正在谈论的Ajax函数:
$('.register_submit').click(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: "./functions/register.php",
data: new FormData(this),
contentType: false,
processData: false,
success : function(data){
if (data.code == "200"){
window.location.replace("./?page=home");
} else {
$(".display-error").html("<ul>"+data.msg+"</ul>");
$(".display-error").css("display","block");
}
}
});
});
和我的表格:
<form class="addCar_form" data-toggle="validator" method="post" enctype="multipart/form-data" >
<input type="file" class="form-control productimages" id="images" name="images[]" onchange="preview_images();" multiple/>
<input type="submit" name="addCar_submit" value="Auto toevoegen" class="btn btn-default button addCar_submit">
</form>
请不要将此问题标记为重复,因为我一直在阅读有关ajax的内容,并且它在其他主题中是异步的,但我真的没有从这些答案中得到它。谁看到我做错了什么?
答案 0 :(得分:1)
$(".register_submit")
的点击处理程序将定位按钮;然后按钮通过FormData(this)
传入。 FormData应该包含对表单的引用...
另外,我在这个例子中没有在表单上看到register_submit
类定义,所以可能它被忽略了?
在您的PHP页面中,您是否可以通过它来查看正在传递的数据格式?通过评估表单发布的数据,这有助于追踪这类问题。
答案 1 :(得分:-1)
我认为您的服务器使用不同的状态代码返回错误。因此,可能不会调用success
回调。
$.ajax
有不同的回调我认为error
是您需要检查的回复。
来自docs:
如果请求失败,则调用错误回调选项。它接收jqXHR,一个指示错误类型的字符串,以及一个异常对象(如果适用)。一些内置错误将提供一个字符串作为异常对象:&#34; abort&#34;,&#34; timeout&#34;,&#34; No Transport&#34;。
<强>尝试:强>
$('.register_submit').click(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "./functions/register.php",
data: new FormData(this),
contentType: false,
processData: false,
success: function (data) {
if (data.code == "200") {
window.location.replace("./?page=home");
} else {
$(".display-error").html("<ul>" + data.msg + "</ul>");
$(".display-error").css("display", "block");
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
});