这是在 CodeIgniter 中工作的场景:(如果问题格式不正确,我很抱歉,这是我在这里的第一篇文章。)
- 我有大表格要提交,并且在验证后使用 ajax 提交 OK。
- 在我的控制器中,如果用户已登录,我将在视图中传递用户名,并将其放置在表单的隐藏输入字段中。如果用户未登录,则结果为
<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( 功能与用户现在登录,也不必再次填写表格?
想出了一个方法 ,希望能帮助更多的人。
我在提交函数之外初始化了对话框:
$("#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');
现在一切正常,我的表单在登录后提交:)