繁体   English   中英

MVC Ajax呼叫问题

[英]MVC Ajax Call issue

在MVC视图中,

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

但是我正在使用Ajax get方法检查重复检查。 如果该值存在,它将返回true。 然后,对于按钮提交,我将返回false。

但是在我的情况下,ajax调用未返回任何内容。 或者更确切地说,该过程不等待ajax回来。 无论如何我能实现它。

单击我的代码按钮

var isDraftValid = 0;
        if(checkAjax()==false)
        {
            isDraftValid++;
        }
        if(check2()==false)
        {
            isDraftValid++;
        }
        if(isDraftValid>0)
        {
          return false;
        }

CheckAjax代码:

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方法中声明结果变量,并在请求完成时为其分配值,然后返回此变量。

尝试这个

var href = '@Url.Action("IsDuplicate", "Book",new{bTitleVal=bTitleVal})' 

在仅警告“ returndata”时,您能够看到“ true”或“ false”? ,请尝试根据您的情况报价,并给e.preventDefault射击,而不是返回false

也许您可以使用其他类似的调用顺序:

dataOk = true;
if(!check2())
{
    dataOk = false;
}
if(dataOk))
{
    dataOk = checkAjax();
}
return dataOk;

或者,也许我不明白您的要求?

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM