【问题标题】:jquery form submit using ajaxjquery表单使用ajax提交
【发布时间】:2013-06-27 12:37:07
【问题描述】:

我想使用 ajax 提交我的表单。

下面是我的代码:

$("#loginForm").submit(function() {
var url = <url>;
$.ajax({
       type: "POST",
       url: url,
       data: $("#loginForm").serialize(), // serializes the form's elements.
       success: function(data)
       {
            if(data == '0'){ 
                    $("#loginErr").show();
                    return false;
            }
            else if(data == '1')
                    return true;
       }
     });
  return false;
});

如果 ajax 响应为 1,我想提交我的表单。但无论数据值如何,表单都没有被提交。它总是得到返回值假。我已经检查了它是否达到 else if 条件,但返回时不会停止执行。

如何提交我的表单?我想刷新我的页面。

【问题讨论】:

  • AJAX 是异步的,顺便说一句你不能从成功回调函数中返回值
  • 您的 url 变量是您真实代码中的实际 URL,对吗?
  • 请发布您的服务器端代码...
  • @roasted,那我该怎么办?
  • @Aijaz,我已经检查过了,它达到了 else if 条件,但没有停止执行。

标签: jquery ajax forms


【解决方案1】:

使用它:

$("#loginForm").submit(function (event) {
    var url = < url > ;
    $.ajax({
        type: "POST",
        url: url,
        context:this, //setting context on form
        data: $("#loginForm").serialize(), // serializes the form's elements.
        success: function (data) {
            if (data == '0') $("#loginErr").show();    
            else if (data == '1') this.submit();//use js submit event, not jq. We need to manually submit it now that we know its successful
        }
    });
    event.preventDefault(); //Stop the form submitting straight away
});

【讨论】:

  • 检查条件 if (data == '1') 是否满足
  • 在这种情况下给你什么:console.log(this)?
  • 它说它是一个表单对象
  • 并删除此提交处理程序$("#loginForm").submit(...),您的表单提交了吗?如果你尝试 $(this).off('submit').submit() 会怎样?
  • 请忽略我之前的评论,它给出:Object { url=, type="POST", more...}
【解决方案2】:

我不确定您要检查哪些数据。但是如果这些数据来自表单本身,那么您需要在 ajax 调用之前对其进行检查。一旦你进行了 ajax post 调用,你的表单就已经提交了。

 $("#loginForm").submit(function(e) 
 {

 var url = <url>;
 e.preventDefault();
 mydata = $("#loginForm").serialize();
 //Your check here
 if(mydata == '0')
 { 
      $("#loginErr").show();
      return false;
 }

 $.ajax({
   type: "POST",
   url: url,
   data: mydata,
   success: function(response)
   {
        //this is your post response processor
   }
 });
 return false;
 });

【讨论】:

    【解决方案3】:

    因为我想刷新我的页面,我确实想要同步请求。设置 async false 解决了这个问题。我能够在 Ajax 对象之外获取 ret 值,因为它是同步请求的。

    $("#loginForm").submit(function() {
    var url = <url>;
    var ret = false;
    $.ajax({
           async: false,
           type: "POST",
           url: url,
           data: $("#loginForm").serialize(), // serializes the form's elements.
           success: function(data)
           {
               //alert(data); // show response from the php script.
                if(data == '1')
                        ret = true;
                else if(data == '0')
                        $("#loginErr").show();
           }
         });
         return ret;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 2013-04-25
      • 1970-01-01
      相关资源
      最近更新 更多