javascript - 页面加载时的 Jquery 设置页面状态

标签 javascript jquery html ajax

我正在尝试使用状态来处理不同的 ajax 数据和调用。在初始页面加载时,我想加载某个状态。这有效,ajax 调用返回一些 html 并将其放入表中。

然而,一旦我与页面交互,它会尝试正确加载,但随后会重新加载第一个状态并在 url 中设置“?#”。我第二次尝试时状态发生变化并添加了新的 html。如果我删除 ?# 并重新加载它会恢复奇怪的行为。是因为我的声明方式吗?提前致谢!

代码:

 var state = "images";
 var items = [];

 $(document).ready(function(){
   getData();
 });

var getData = function () {
            $.ajax({
            type: "POST",
            url: "handler.php",
            data: {data: items, state: state},
            cache: false,
            success: function (data) {
               updateTable(data);
            },
            abort: function (data) {
               alert('abort');
            },
            error: function (data) {
               alert('error');
            }
            });
   }

    var updateTable = function(data) {
            $("#dataHolder").empty();
            $("#dataHolder").append(data);
            $("h2").html(state);
    }

    $("#view").on("click", function() {
            items = $("#slide").val();
            state = "videos";
            getData();
    });

最佳答案

使用 preventDefault() 方法来阻止链接点击的默认行为,即导航到新页面。如果您这样做,您的页面将不会重新加载。

$("#view").on("click", function(e) {
  e.preventDefault();
     items = $("#slide").val();
     state = "videos";
     getData();
});

此外,全局变量也不是传输数据的好主意。最好更新您的 getData 方法以接受 2 个参数

var getData = function (state,items) {
  //use state and items as needed
}

当你调用时,传递值

$("#view").on("click", function(e) {
  e.preventDefault();
     var slideItems= $("#slide").val();       
     getData("vides",slideItems);
});

关于javascript - 页面加载时的 Jquery 设置页面状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34387695/

相关文章:

javascript - 使用 jQuery 切换下一个元素

Javascript 加载不同 url 时请求的资源上不存在 'Access-Control-Allow-Origin' header

javascript - Postman 相同的请求在 angularjs http 请求中不起作用

javascript - 计算数据客户端还是服务器端更快?

javascript - 如何在 Div 框中精确地调整图像

Jquery Ajax加载方法

javascript - 在断开连接的状态下运行 jquery 移动网络应用程序?

python - 如何将 HTML 嵌入到 IPython 输出中?

html - 单击时自定义输入不会更改

html - SVG 背景图像不跨浏览器水平拉伸(stretch)