Javascript Axios.js-preventDefault()在单击时不工作,数据参数似乎已关闭

Javascript Axios.js-preventDefault()在单击时不工作,数据参数似乎已关闭,javascript,php,jquery,symfony,axios,Javascript,Php,Jquery,Symfony,Axios,所以我现在的代码有很多问题 首先,我使用Axios发送请求,我尝试从Symfony后端获取数据,但是无论我向该方法发送什么,它总是发送get请求。这不是一个“问题”,但有这样的行为是恼人的方式,它没有做它应该做的。如果我将方法更改为POST,它仍将发送GET请求 然而,更大的问题是我使用的preventDefault()函数不起作用,我在一个链接标记上添加了一个eventListener,但每次单击它,它都会显示从后端发送的JSON响应 这是我的代码: 一个简单的标签 document.on

所以我现在的代码有很多问题

首先,我使用Axios发送请求,我尝试从Symfony后端获取数据,但是无论我向该方法发送什么,它总是发送get请求。这不是一个“问题”,但有这样的行为是恼人的方式,它没有做它应该做的。如果我将
方法
更改为POST,它仍将发送GET请求

然而,更大的问题是我使用的
preventDefault()
函数不起作用,我在一个链接标记上添加了一个eventListener,但每次单击它,它都会显示从后端发送的JSON响应

这是我的代码:


一个简单的标签

document.onload=函数(){
var link=document.getElementById('link');
link.addEventListener('click',onclick correction);
控制台日志(链接);
功能校正(事件){
event.preventDefault();
const test=this.href;
控制台日志(测试);
axios({
方法:“get”,
url:url,
数据:“真实”
})
.然后(功能(响应){
控制台日志(响应);
})
.catch(函数(错误){
console.log(错误);
});
}
};
请注意,
console.log(link)
console.log(url)
没有在控制台中打印任何内容(我使用的是Firefox…),我不知道为什么

此外,我有一个后端问题,它似乎与请求的paratemers有关。我将“true”传递为
数据
,并在后端执行此操作

/**
*@Route(“/corrierexercice/{id}”,name=“corrierexercice”)
*/
公共功能勘误表(Exercice$Exercice,Request$Request):响应
{
$test=$request->query->get('data');
如果($test==“true”){
$message=“Contains true”;
}否则{
$message=“不包含true”;
}
$contenu=$exercice->getContenu();
返回$this->json(['code'=>200,'message'=>$message,'contenu'=>$contenu],200);
}
这是我的回答:

code    200
message "Does not contain true"
响应直接显示在浏览器中,而不是控制台中。因此,
preventDefault()
在这里似乎无法正常工作

我真的很迷茫,不知道为什么这么简单的代码片段不能产生我想要的结果。这里的预期结果是,点击按钮链接不会显示请求,而是在控制台日志中打印它,请求与数据参数一起发送,我的后端可以正确地“分析”,这里只是一个基本的字符串比较,并发送适当的响应


有人能帮我解决这些问题吗?

我在javascript方面发现了一些问题。(我不是专家,但很有效)

  • 事件捕获在window.onload上的匿名函数上运行良好
  • 您必须将“此”发送到您的函数
  • 使用.getAttribute('href')获取'href'的值
希望它会有用

<!doctype html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js"></script>
</head>
<body>

  <a id="link" href="https://jsonplaceholder.typicode.com/todos/1" >Corriger</a>

  <script  type="text/javascript">


    window.onload = function () {

      var link = document.getElementById('link');
      link.addEventListener('click', function(){
        onClickCorrection(this);
      });
      console.log(link);

      function  onClickCorrection(element) {

        event.preventDefault();
        const href = element.getAttribute('href');
        console.log(href);

        axios({
          method: 'get',
          url: href,
          data: 'true'
        })
        .then(function (response) {
          console.log(response);
        })
        .catch(function (error) {
          console.log(error);
        });
      }
    };


  </script>

</body>
<html>

window.onload=函数(){
var link=document.getElementById('link');
link.addEventListener('click',function()){
(这一点);
});
控制台日志(链接);
功能校正(元件){
event.preventDefault();
const href=element.getAttribute('href');
console.log(href);
axios({
方法:“get”,
url:href,
数据:“真实”
})
.然后(功能(响应){
控制台日志(响应);
})
.catch(函数(错误){
console.log(错误);
});
}
};