Javascript MVC Ajax调用问题
从MVC的角度来看 一个提交按钮,我在其中检查所有验证。如果验证错误,我将返回false。这样表单就不会发布 然而,我使用ajaxget方法检查重复检查。如果该值存在,则返回true。然后,对于按钮提交,我将返回false 但是在我的例子中,ajax调用没有返回任何内容。或者更确切地说,这个过程并不等待ajax的回归。不管怎样,我都能做到 我的代码点击按钮Javascript MVC Ajax调用问题,javascript,jquery,asp.net,ajax,asp.net-mvc,Javascript,Jquery,Asp.net,Ajax,Asp.net Mvc,从MVC的角度来看 一个提交按钮,我在其中检查所有验证。如果验证错误,我将返回false。这样表单就不会发布 然而,我使用ajaxget方法检查重复检查。如果该值存在,则返回true。然后,对于按钮提交,我将返回false 但是在我的例子中,ajax调用没有返回任何内容。或者更确切地说,这个过程并不等待ajax的回归。不管怎样,我都能做到 我的代码点击按钮 var isDraftValid = 0; if(checkAjax()==false) {
var isDraftValid = 0;
if(checkAjax()==false)
{
isDraftValid++;
}
if(check2()==false)
{
isDraftValid++;
}
if(isDraftValid>0)
{
return false;
}
检查Ajax代码:
var href = '@Url.Action("IsDuplicate", "Book")' + '/' + bTitleVal;
$.ajax({
type: "get",
url: href,
dataType: "json",
traditional: true,
cache: false,
contentType: 'application/json',
//data: JSON.stringify({ bookTitle: bTitleVal }),
data: {},
success: function (returndata) {
debugger;
if (returndata == true) {
return true;
}
else {
return false;
}
},
error: function (arg, data, value) {
}
});
您的ajax请求是异步的,因此必须通过回调来完成,或者(不推荐)添加async:false:
$.ajax({
type: "get",
url: href,
async: false
还有一个细节,在CheckAjax方法中声明结果变量,并在请求完成时为其赋值,然后返回此变量。您的ajax请求是异步的,因此必须使用回调来执行,或者(不推荐)add async:false:
$.ajax({
type: "get",
url: href,
async: false
还有一个细节,在CheckAjax方法中声明结果变量,并在请求完成时为其赋值,然后返回此变量。试试这个
var href = '@Url.Action("IsDuplicate", "Book",new{bTitleVal=bTitleVal})'
试试这个
var href = '@Url.Action("IsDuplicate", "Book",new{bTitleVal=bTitleVal})'
仅对“returndata”发出警报时,您可以看到“true”或“false”,尝试在您的条件下引用它们,并在仅警告您能够看到“真”或“假”的“返回数据”时,给e.preventDefault一个快照,而不是返回false,试着在你的条件下引用它们,并给e.preventDefault一个镜头,而不是返回false也许你可以使用一个不同的调用序列,如下所示:
dataOk = true;
if(!check2())
{
dataOk = false;
}
if(dataOk))
{
dataOk = checkAjax();
}
return dataOk;
或者我不明白你的要求
关于也许您可以使用如下不同的调用顺序:
dataOk = true;
if(!check2())
{
dataOk = false;
}
if(dataOk))
{
dataOk = checkAjax();
}
return dataOk;
或者我不明白你的要求
关于post您的asp代码…您的函数正在使用异步的ajax调用,因此下一条语句将作为after函数调用执行post您的asp代码…您的函数正在使用异步的ajax调用,因此下一条语句将作为after函数调用执行