表单提交时的 jQuery 对话框和 ajax 登录

Posted

技术标签:

【中文标题】表单提交时的 jQuery 对话框和 ajax 登录【英文标题】:jQuery dialog and ajax login on form submit 【发布时间】:2012-07-26 00:14:21 【问题描述】:

这是在 CodeIgniter 中工作的场景:(如果问题格式不正确,我很抱歉,这是我的第一篇文章。)

    我有大型表单要提交,并且在验证后使用 ajax 提交正常。 在我的控制器中,如果用户已登录,我将在视图中传递用户名,并将其放置在表单的隐藏输入字段中。如果用户未登录,则结果为

<input type="hidden" id="loggedin" name="username" value="" />

3.在我的 javascript 中,我检查表单是否有效()以及用户名!=="",然后我使用 ajax 发布表单,否则我将弹出一个带有登录页面的对话框。当用户登录时,表单提交工作正常。

问题是用户在登录对话框中登录后,我无法弄清楚如何发布表单。

代码来了:

    $('#MyForm').submit(function(event)
     event.preventDefault();


     var username=document.getElementById('loggedin').value;
     if($('#MyForm').valid() && username!=="" )
     var serializeddata=$("#MyForm").serialize();



      $.ajax(
    type: "POST",
    url: "formsubmition", // The urls are in CI format
    contentType: "application/x-www-form-urlencoded;charset=UTF-8",

    data: serializeddata,
    dataType: "html",
    success: function(data) 
        $('#message_ajax_anaz').html(data);
                    
                )




     else if($('#MyForm').valid() && username=="")

      $("#loginpop").load("login").dialog();


      
     );

登录页面ajax代码:

$('#login').submit(function(event)
     event.preventDefault();

     var dataser=$('#login').serialize();
      $.ajax(
    type: "POST",
    url: "login",
    contentType: "application/x-www-form-urlencoded;charset=UTF-8",

    data: dataser,
    dataType: "html",
    success: function(data) 
        $('#message_ajax').html(data);
                    
                )

以上在对话框中工作正常,我可以正常登录。

现在我如何在 $('#MyForm').submit(function 用户现在已登录,也无需再次填写表格?

刚刚想出办法 希望对更多人有帮助。

我在提交函数之外初始化了对话框:

    $("#loginpop").load("login").dialog(
        autoOpen:false
    )

然后更改了我的 else 语句:

    else if($('#MyForm').valid() && username=="")

  $("#loginpop").dialog('open');

并在我的登录 ajax 成功功能中添加了:

    $("#loggedin").val(data); // Changed the value of the hidden input with the username value on the fly. data contains the username

        $('#MyForm').submit();
        $('#loginpop').dialog('close');

现在一切正常,登录后我的表单正在提交:)

【问题讨论】:

【参考方案1】:

https://***.com/a/2276477/753676 会容易得多。

http://api.jquery.com/serialize/

你也可以用cookie.js存储(提交后删除cookie)直接提交即可

【讨论】:

以上是关于表单提交时的 jQuery 对话框和 ajax 登录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery AJAX 和 JSON 通过 Bootbox 确认表单提交

在 Javascript/ajax 或 jquery 中提交多个表单

更改复选框时的ajax发布表单jquery ajax不起作用

Django Ajax ModelForm 向 request.POST 提交一个空表单

Ajax 提交之快速获取表单值

如何在 ASP.NET MVC 中通过 Ajax 提交表单?