我有一段代码,其中有一个链接和一个输入按钮都调用相同的onclick功能。但是,它们的表现不同。
<input type="button" onclick="undelete_this("profile.php", 42)" value="Undelete">
<a href="" onclick="undelete_this("profile.php",42)"><strong>here</strong></a>
function undelete_this(url, id){
if(confirm("Are you sure you want to undelete this record?")){
if(id!=="" && id!=0){
var info = 'id=' + id +"&action=undelete";
$.ajax({
type: "GET",
url: url,
data: info,
success: function(){
window.location.href = ($(location).attr('pathname')+"?enter=false&id="+id);
},
error: function(jqXHR, exception, realexception) {
alert(jqXHR.responseText+" "+realexception);
}
}
)
}
}
return false;
}
单击按钮时,ajax状态为成功;但是当单击链接时,ajax状态为错误(错误代码= 0),并且responseText为空。
有没有人知道为什么会这样?
答案 0 :(得分:1)
因为拥有空href
会导致在单击链接时重新加载页面。重新加载页面(通常:导航到任何URL)会中止任何未完成的AJAX请求,这就是您没有得到回复的原因。
可能的解决方案:
onclick="undelete_this("profile.php",42); return false;"
将取消默认操作(重新加载页面)href="javascript:;"
会将默认操作设为no-op,再次阻止重新加载页面答案 1 :(得分:0)
您不能简单地将href留空,因为href=''
是返回当前页面的链接(即它会导致页面刷新)。
有一种方法可以使链接在单击时完全没有任何内容(除非Javascript事件绑定到它)。
<a href="javascript:undelete_this("profile.php",42);"><strong>here</strong></a>