我想使用 jQuery ajax 重定向到下一页,但它可以工作。我是 jQuery 和 ajax 的新手,并且不了解其语法,请帮助
我已经搜索了很多与此相关的内容,但它对我没有帮助
<link href="~/Content/Sidecontroller.css" rel="stylesheet" />
<div class="nav-content">
<ul class="nav">
<li class="active">
<a class="move" href="/Home/Index">
<span class="icon-home"></span>
<span class="text">home</span>
</a>
</li>
<li>
<a class="move" href="/Service/Userdata">
<span class="icon-user"></span>
<span class="text">User</span>
</a>
</li>
<li>
<a class="move" href="/Service/Stockdata">
<span class="icon-headphones"></span>
<span class="text">Stock</span>
</a>
</li>
<li>
<a class="move" href="#">
<span class="icon-picture"></span>
<span class="text">Pos</span>
</a>
</li>
</ul>
</div>
@Scripts.Render("~/bundles/jquery")
<script src="~/Scripts/Script.js"></script>
$(document).ready(function() {
$('.move').bind('click', function(e) {
var url = $(this).find("a[href]").attr('href');
e.preventDefault();
$.ajax({
type: 'GET',
url : url,
success : function(response) {
window.location.href =url;
}
});
});
});
最佳答案
您的逻辑问题是因为 .move
元素是保存 href
属性的 a
,但您调用 find()
,它什么也不返回。
要解决您的问题,只需删除 find()
调用即可。另请注意,bind()
已弃用,不应使用。将其替换为 on()
。我还建议您检查您正在使用的 jQuery 版本。最新的是3.4.1。
$('.move').on('click', function(e) {
e.preventDefault();
var url = $(this).attr('href');
$.ajax({
type: 'GET',
url: url,
success: function(response) {
window.location.assign(url);
}
});
});
这里还有一些其他事情需要注意。首先,此示例中的 AJAX 请求几乎完全是多余的,因为您没有向其发送任何数据,并且在进行重定向之前对响应不执行任何操作。您在评论中指出这只是一个学习练习,因此上述内容只是需要注意的事情。
其次,我更新了重定向以使用 assign()
方法,而不是设置 href
属性。这是个人偏好,因为两者都可以,但 IMO 重定向是一个操作,应该通过方法调用来实现。
关于jquery - 我想使用 ajax 重定向到下一页,但它可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57410665/