MVC Ajax调用问题

MVC Ajax Call issue

本文关键字:问题 调用 Ajax MVC      更新时间:2023-09-26

在我的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一个机会,而不是返回错误的

也许您可以使用不同的调用序列,如下所示:

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

或者我不理解你的要求?

问候