【发布时间】:2017-05-05 11:23:55
【问题描述】:
我想在超链接标签“a”上添加 ajax 调用,这个 ajax 只会向服务器发送一些信息,我不必得到任何回报。
我试过这样的事情:
document.querySelector("#myId").onclick = function() {
$.ajax({
url: 'path',
type: 'post',
data: {key: 'value'},
})
.done(function() {
console.log("success");
})
.fail(function() {
console.log("error");
});
}
我发现,如果我的“a”标签带有类似
<a href="https://www.google.com" id="myId">click</a>
我的服务器不会“获取任何信息,并且我的 ajax 失败回调函数被触发,但是如果我删除 href-link 或将其替换为 # 之类的
<a href="#" id="myId"></a>
<a id="myId"></a>
我的服务器会收到我发送的信息,当然我的成功回调函数被触发了
fail回调函数没有返回任何错误信息,只是一个简单的字error
有谁知道发生了什么以及如何更改页面并在同一次点击中发送 ajax 调用?
顺便说一句,我不喜欢在我的成功回调函数中添加类似window.location.href = "https://www.google.com.tw" 的东西,因为在这种情况下我要维护其他人的代码,我更喜欢将我的代码附加到下面而不是修改了已经存在的,谢谢!
【问题讨论】:
-
如果你点击一个链接,你将被重定向到另一个页面,所以没有时间做ajax。您提到的解决方案效果很好,但是如果您愿意,可以将数据传递到其他页面并在此处进行处理。但我不知道你用 ajax 做什么这么复杂来帮助你。希望你能听懂我的英语
-
顺便说一句,如果您的链接不应该将用户重定向到另一个页面,它应该是
<button>。除非你真的想“欺骗用户”。 -
我想在“a”标签上添加ajax调用的原因是,我想记录使用的行为(比如他们点击了哪个链接),但我不想修改代码已经存在。所以我决定将 onclick 函数添加到“a”标签,它可以通过我的代码记录使用点击行为,也可以通过原始代码重定向用户
-
它看起来很相似,但我猜重点是彼此有点不同?
标签: javascript html ajax hyperlink