php - Symfony + VueJs + Axios = 无发送表单参数
问题描述
我正在使用 Symfony 4、VueJs 2 和 Axios 使用 Ajax 发送我的表单。表单发送没有明显问题,但似乎我的表单的输入数据没有随它一起发送。
好奇心:我做到了,但使用 jQuery Ajax 并且工作得很好。
我已经尝试过这个 2017 解决方案,但对我不起作用:POST Requests with axios not sent parameters
索引.html
<form id="form" @submit.prevent="sendForm">
<input type="text" v-model="name">
<input type="submit" value="Send">
</form>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
let form = new Vue({
el: "#form",
data: {
name: ""
},
methods: {
sendForm: function () {
axios
.get("/send", this.data)
.then(response => console.log(response.data))
}
}
});
</script>
主页控制器.php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class HomeController extends AbstractController {
/**
* @Route("/", name="home")
*/
public function index() {
return $this->render('home/index.html.twig');
}
/**
* @Route("/send", name="send")
*/
public function sendForm(Request $request) {
$name = $request->query->get("name");
return new Response($name);
}
}
解决方案
在 Symfony 中尝试:$request->getContent()
.
示例:
// ...
class HomeController extends AbstractController {
//...
/**
* @Route("/send", name="send")
*/
public function sendForm(Request $request) {
// Decode data with json_decode()
$data = json_decode($request->getContent(), true);
$name = $data['name'];
return $this->json($name);
}
//...
}
享受!
推荐阅读
- python - 为什么这个函数需要索引?
- ios - 在模拟器或真实设备上的 iPhone 11 上,文本的闪屏边被截断
- next.js - 处理 POST API next.js 和架构
- python - Windows 命令找不到脚本
- html - 如何强制元素出现在父级及其父级后面?
- python - Discord.py - 有没有办法使用 @commands.has_role('RoleName') 来检查这个人是否具有两个角色之一?
- php - Snipe-IT:电子邮件通知 URL 链接已损坏(指向 localhost)
- neo4j - 简化密码,匹配所有节点和两种节点类型之间的关系
- module - 在 prestashop 中安装模块时出现错误
- github - GitHub 使用什么库来呈现 Markdown 文档之间的差异?