jquery - 我想使用 ajax 重定向到下一页,但它可以工作

标签 jquery html ajax

我想使用 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/

相关文章:

javascript - 解开 HTML 标签,仅保留第一级

javascript - 条件组合多个单选按钮显示/隐藏

php - 通过表单或 Url 传递值

javascript - 如何使用 AJAX 发送 div 元素?

javascript - 如何将 enctype 属性添加到 FormData() 对象?

javascript - 如何等到jquery效果循环完成后再执行函数

jquery - 当另一个元素悬停时保持一个元素的悬停

javascript - 更新 HTML 表以包含 header JS

javascript - 我可以用其他方法(例如 CSS)来做到这一点吗?

html - CSS 转换和悬停属性