2016-12-26 50 views
0

我有一个使用ajax动态加载的窗体。一旦它被加载,我就可以提交表单,以便重新加载页面。我正在尝试现在ajaxify窗体,以便我不必重新加载页面。我通过malsup使用ajaxform插件,但是我无法正确使用这个插件,因为我试图ajaxify动态加载的窗体。目前,使用下面的代码,它要求我提交表单两次以进行任何更改。换句话说,一旦使用页面上的上一个按钮加载表单,然后我必须点击两次提交按钮才能提交表单。第一次点击后,不提交表单,其他每次点击都会执行。我不明白为什么我必须在第一次提交表格两次。请参阅下面的代码。jquery ajaxform需要两次点击动态形式

$(document).ready(function() { 
    var options = { 
    beforeSubmit: showRequest, 
    error: showError, // error 
    success: showResponse // post-submit callback 
}; 
$(document).on('submit', '#send-form', function(event) { 
       $('#send-form').ajaxForm(options); 
       return false; 
}); 
}); 

// pre-submit callback 
function showRequest(formData, jqForm, options) { 
    alert('Please wait...','Please wait...'); 
    return true; 
} 
// error callback 
function showError(er, err, error) { 
    var currentAlert = $.jAlert('current'); 
    currentAlert.closeAlert(); 
    errorAlert('Error','Try Again Later'); 
} 
// post-submit callback 
function showResponse(responseText, statusText, xhr, $form) { 
    var currentAlert = $.jAlert('current'); 
    currentAlert.closeAlert(); 
    successAlert('Success!', 'Your form has been sent'); 
} 

<form action="" method="post" id="send-form"> 
<input type="submit" class="submit-btn" name="modal-form" value="submit" /> 
</form> 

我尝试使用,而不是给ajaxForm ajaxSubmit的,因为我明白,ajaxForm不会实际提交表单。当我这样做时,表单似乎在第一次点击时提交(所有提醒都会出现),但实际上没有提交。我将不胜感激任何帮助。

回答

0

找出问题所在。我不得不在页面加载时调用jaxform,然后提交它。不提交,然后调用ajaxform。无论如何,这似乎是工作。

$(document).ready(function() { 
    var options = { 
    type: 'post', 
    beforeSubmit: showRequest, 
    error: showError, // error 
    success: showResponse // post-submit callback 
    }; 
$('#send-form').ajaxForm(options); 
$('#send-form').live('submit', function (e) { 
     e.preventDefault(); 
    }); 
}); 

// pre-submit callback 
function showRequest(formData, jqForm, options) { 
return true; 
alert('Please wait...'); 
} 
// error callback 
function showError(er, err, error) { 
var currentAlert = $.jAlert('current'); 
currentAlert.closeAlert(); 
errorAlert('Error','Try Again Later'); 
} 
// post-submit callback 
function showResponse(responseText, statusText, xhr, $form) { 
var currentAlert = $.jAlert('current'); 
currentAlert.closeAlert(); 
successAlert('Success!', 'Your form has been sent'); 
} 

<form action="" method="post" id="send-form"> 
<input type="submit" class="submit-btn" name="modal-form" value="submit" /> 
</form> 
0

你在这里发送了什么数据?你在哪里发送它们?

我想你需要在你的onSubmit函数中添加一个event.preventDefault

我会推荐使用$ .post()函数。你可以在这里找到更多的信息:https://api.jquery.com/jquery.post/

相关问题