Ajax返回undefined

时间:2018-02-08 09:09:43

标签: javascript php ajax forms

我正在尝试使用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的内容,并且它在其他主题中是异步的,但我真的没有从这些答案中得到它。谁看到我做错了什么?

2 个答案:

答案 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);
        }
    });
});