【问题标题】:how to get ajax form submit return value如何获取ajax表单提交返回值
【发布时间】:2015-10-08 18:50:23
【问题描述】:

我使用 ajax 提交表单,但是当我完成整个过程时,它停在 api.php 并返回到 ajax 成功。 代码如下:

<form method="POST" id="form_1" action="../api.php" enctype="multipart/form-data" novalidate="novalidate">
  <input type="text" name="name" id="name" value="Amy" readonly="readonly">
  <input id="fileBox" class="fileUpload" type="file" name="img" accept="image/*" required>
  <input type="hidden" name="isSubmit" value="1"/>
</form>

<a id="btnSubmit" href="javascript:void(0)">Submit</a>
$("#form_1").submit(function(){
  var formData = new FormData(($this)[0]);
  $ajax({
    type: "POST",
    url: "../../api.php",
    data: { action:"formSubmit", formData:formData},
    processData: false,
    contentType: false,
    success: function(){
      console.log('success return');
    }
  })
});

$("#btnSubmit").click(function(){
  if($("#form_1").valid()){ 
    // inside click event handler you trigger form submission
    $("#form_1").trigger('submit');
  }
});

在我的 api.php 中

if($action=='formSubmit'){
  $name = $_POST['name'];
  if(createUser($name)){
    return true;
  }else{
    return false;
  }
}

我检查了数据库,记录创建成功。但我无法成功获得控制台。浏览器上的url显示的是api.php的路径。为什么我停在那里不能得到回报?

感谢您的帮助!!

我终于做到了!我在 ajax 之后缺少“return false”;但其实我真的不知道return false的作用;

$("#form_1").submit(function(){
var formData = new FormData((this)[0]);
$.ajax({
type: "POST",
url: "../../api.php",
data: { action: "formSubmit",  formData: formData},
processData:false,
contentType:false,
success: function(data){
$("#thankyou").show();
}
})
return false;  
});

【问题讨论】:

    标签: javascript php jquery ajax forms


    【解决方案1】:

    重定向到其他页面将使用header()

    if ($action == 'formSubmit') {
      $name = $_POST['name'];
      if (createUser($name)) {
        // Redirect to right.htm
        header("Location: right.htm");
      } else {
        // Redirect to wrong.htm
        header("Location: wrong.htm");
      }
      die();
    }
    

    【讨论】:

    • 但现在我真的在 api.php 中回显了一个文本 'true' 并且没有返回表单页面
    • 没有。还是留在api.php
    • 在 index.php 中提交后,然后登陆 api.php 并回显文本'true'
    • @SFY 究竟想要它发生什么。在$("#form_1").trigger('submit'); 之后给return false
    • 如果为 false,则重定向到另一个页面。如果为真,则显示 div
    【解决方案2】:

    javascript 无法识别来自 php 的返回值。请改用echo

    if($action=='formSubmit'){
        $name = $_POST['name'];
        if(createUser($name)){
           echo 'true';
        }else{
           echo 'false';
        }
    }
    

    如果您想查看来自 api.php 的实际输出,请在您的 ajax 中使用以下代码。

    success: function(res){
       console.log(res);
    }
    

    【讨论】:

    • 我使用了 echo 但停留在 api.php 而不是表单页面
    • 留在api.php是什么意思?
    • 在 index.php 中提交后登陆到 api.php
    • 并回显文本'true';
    • 这意味着您没有加入ajax 电话。尝试将alert("here"); 放在此行下方:$("#form_1").submit(function(){
    猜你喜欢
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2011-05-12
    • 1970-01-01
    相关资源
    最近更新 更多