Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax点击事件_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript Ajax点击事件

Javascript Ajax点击事件,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用ajax重定向页面,而不刷新标签。然而,它是随机工作的。有时,它甚至不生成日志,我特意将日志放在函数中,以检查它是否被调用。我猜一个标签执行已经在内联中声明的href。我如何使这100%的工作 $(".view-about-us a").on('click', event=>{ event.preventDefault(); var new_url = $(this).attr("href"); $.ajax({ dataType: 'html', type: "

我使用ajax重定向页面,而不刷新标签。然而,它是随机工作的。有时,它甚至不生成日志,我特意将日志放在函数中,以检查它是否被调用。我猜一个标签执行已经在内联中声明的href。我如何使这100%的工作

$(".view-about-us a").on('click', event=>{

event.preventDefault();
var new_url = $(this).attr("href");

$.ajax({
    dataType: 'html',
    type: "POST",
    url: new_url,
    data: {

    },
    success: function(result) {
      window.history.pushState(null, null, new_url);

      var htmlString = result;

      var parser = new DOMParser();
      var doc = parser.parseFromString(htmlString, "text/html");
      var parent = doc.querySelector(".main-container");
      var children = parent.childNodes;

      children.forEach(child => console.log(child));

      $(".main-container").html(children);
    },
    error: function(result) {
        alert('error');
    }
});
});

您可以做的一件事是让所有人
href
属性
javascript:void(0)
,然后将以前的
href
存储在数据属性中,例如
data href

在执行
event.preventDefault()之前定义的
event
在哪里
?@kshetline噢,糟糕,我编辑了它。您使用的是箭头函数,因此此不会绑定到单击的元素。在这种情况下,使用一个普通函数,即
function(event){…}
@Phil我想它不能与preventDefault一起工作,但它肯定不能这样做,因为我在Drupal下工作,我想Drupal不允许我这样做。顺便说一句,我检查了新的url,但它返回未定义的。所以,我想我需要找到一种方法让它返回正确的url。