简而言之
我想在用户点击“确定”按钮后进行一些异步服务器端验证(使用AJAX)。如果验证失败,我想在不关闭它的情况下在提示上显示错误消息。
详情
我正在使用即兴版本3.1。我找不到3.1的文档,所以在documentation for version 4.0.1中检查了有两种方法可以做到这一点 -
返回false或event.preventDefault()以保持提示打开
我检查过,因为我使用的是旧版本,因此事件变量在这样的函数中不可用 -
$.prompt('Example 2',{ buttons: { Ok: true, Cancel: false }, submit: submitCertificationPrompt } });
function submitCertificationPrompt(e,v,m,f)
{
//e is not available in case of version 3.0.1
}
我现在无法升级到最新版本,因为我们在3.1版插件代码上进行了一些自定义。
所以,我只能使用return false
方式。我检查过这个有效 -
$.prompt('Example 2',{ buttons: { Ok: true, Cancel: false }, submit: submitCertificationPrompt } });
function submitCertificationPrompt()
{
return false;
}
但是,因为我必须等到收到AJAX响应,所以我尝试使用像这样的javascript回调函数,但它没有像我预期的那样工作 -
$.prompt('Example 2',{ buttons: { Ok: true, Cancel: false }, submit: function(){ submitCertificationPrompt(function(bool){ return bool; }) } });
function submitCertificationPrompt(callback)
{
//I will do an AJAX call here and the prompt should stay open if the response reads validation error. So, I will callback false in that case
callback(false);
}
请帮忙......
答案 0 :(得分:1)
你需要做一个小改动,只需添加一个参数async:false,你在这里调用ajax
$.ajax(
{
type: 'POST',
url: '/Path/TestPost',
async: false,
data: form.serialize(),
success: function(data) {
}
更多信息:Keep impromptu "up" while performing a jquery Ajax/MVC post
答案 1 :(得分:0)
好吧,我不太清楚你在做什么,但利用了$ .ajax正在实施jQuery deferred interface的事实:
$.ajax({
// the opts for the call.
// see the documentation.
}).promise().then(function()
{
// this gets executed when the ajax call comes back with an OK HTTP code like 200
// perform console.log(arguments) here to see what you get.
}, function()
{
// this gets executed when the ajax call comes back with an ERROR HTTP code like 500
// perform console.log(arguments) here to see what you get.
}).always(function()
{
// this gets always executed.
// perform console.log(arguments) here to see what you get.
});