Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MVC Ajax调用问题_Javascript_Jquery_Asp.net_Ajax_Asp.net Mvc - Fatal编程技术网

Javascript MVC 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) {

从MVC的角度来看

一个提交按钮,我在其中检查所有验证。如果验证错误,我将返回false。这样表单就不会发布

然而,我使用ajaxget方法检查重复检查。如果该值存在,则返回true。然后,对于按钮提交,我将返回false

但是在我的例子中,ajax调用没有返回任何内容。或者更确切地说,这个过程并不等待ajax的回归。不管怎样,我都能做到

我的代码点击按钮

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函数调用执行