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一个机会,而不是返回错误的
也许您可以使用不同的调用序列,如下所示:
dataOk = true;
if(!check2())
{
dataOk = false;
}
if(dataOk))
{
dataOk = checkAjax();
}
return dataOk;
或者我不理解你的要求?
问候
相关文章:
- d3-js快速事件调用问题
- 运行Infinite Scroll后调用函数时出现问题
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- Meteor HTTP调用出现问题
- JQuery FullCalendar在从ajax成功调用rerenderEvents时遇到问题
- 使用setInterval调用原型函数时出现问题
- 在HTML中调用函数时出现问题
- 在javascript中调用自定义谷歌搜索标签时出现问题
- setTimeout调用自身的任何问题
- Node.js-异步方法调用问题
- 客户端和服务器端调用 asp 按钮的问题
- 递归承诺调用 - 内存范围变量问题
- 在单击按钮时调用 jquery 函数时出现问题
- JS onclick问题调用css精灵的图片
- 节点/快速路由问题-调用不正确的路径
- 数据源查询回调问题(调用顺序,改变全局变量的能力)
- 更新面板中的中继器- itemcommand代码问题-调用javascript函数与ScriptManager在代码后面
- android:从java问题调用javascript
- 同源策略问题调用sharepoint web服务
- 从 Java 脚本安全问题调用已签名的 Java 小程序