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