第二个Ajax调用(跨浏览器)
我有
<a href="url" onclick="var msg = confirm('Confirm?'); submit(msg, event);">Click me</a>
我想要做的是接受确认框的结果(true / false),将它传递给提交按钮,然后杀死href调用,如果它的false。
我在开发环境中工作,但是当我将其加载到跨浏览器场景中时,第二个调用不起作用:
function submit(msg, evt) {
if(msg == true) {
$.ajax({
type:"POST",
data:{answer:'Correct'},
url:'https://myurl/p'
});
}
else { evt.preventDefault(); return false; }
}
传递的URL只是URL,没有数据(在生产中)。 这个确切的代码在我的环境中工作得非常好,但是在跨浏览器的情况下它失败了。 如果我删除确认框,则一切正常。
我有一种感觉,它与取消确认框中的preventDefault调用绑定。 这将阻止默认禁用下一个呼叫与相同的链接?
首先,请不要使用内联事件处理程序,您可以将其从标记中删除,并在它所属的js中处理:
HTML:
<a href="url" id="myanchor">Click me</a>
JS:
anchor = $('#myanchor')[0];
anchor.on('click',function(){
var msg = confirm('Confirm?');
submit(msg, event);
});
其次,如果msg为真,则ajax调用立即被页面重定向中断,这没有多大意义。 我相信你希望重定向发生在ajax调用完成之后,在这种情况下你应该使用:
function submit(msg, evt) {
if(msg == true) {
$.ajax({
type:"POST",
data:{answer:'Correct'},
url:'https://myurl/p',
complete: function(){window.location="url";}
});
}
evt.preventDefault();
return false;
}
<a href="url" ID="myUrlID">Click me</a>
$(function(){
$("#myUrlID").click(function(event){
event.preventDefault();
var msg = confirm('Confirm?');
if(msg == true) {
$.ajax({
type:"POST",
data:{answer:'Correct'},
url:'https://myurl/p'
});
}
});
});
链接地址: http://www.djcxy.com/p/71703.html