我有以下javascript方法适用于除谷歌浏览器之外的所有浏览器,为了让我在谷歌浏览器中工作,我必须添加未注释的提醒。任何想法如何确保完成而不使用警报消息:
$(document).ready(function () {
$("#EnrolAndEnter").click(function (event) {
var postData = {
'courseID': '@Model.Course.CourseID'
};
$.post('/Course/EnrolUser/', postData, function (data) {
document.getElementById("EnrolAndEnter").innerHTML = "<i class=\"icon-external-link\"></i>Enter";
});
//alert("SUCCESS");
});
});
然后我将我的方法更新为:
$(document).ready(function () {
$("#EnrolAndEnter").click(function (event) {
var postData = {
'courseID': '@Model.Course.CourseID'
};
alert("MSG1");
$.when($.ajax(
{
type: "POST",
url: '/Course/EnrolUser/',
data: postData
}))
.done(function () {
document.getElementById("EnrolAndEnter").innerHTML = "<i class=\"icon-external-link\"></i>Enter";
});
alert("MSG2");
});
});
同样,只有在包含警报时才会在控制器上调用EnrolUser方法。如果没有包含警报,它什么都不做,只是重定向到HREF指定的路由,该路由应该被注册抢占
答案 0 :(得分:0)
尝试console.log('Success');
这将写入JavaScript控制台(按F12并转到“控制台”)。
JavaScript执行暂停,直到警报返回一个值,因此它可能失败,因为警报在POST执行完成之前被触发。
答案 1 :(得分:0)
链接上的HREF在Javascript onclick事件有时间完成之前被解雇并完成是一个时间问题