【发布时间】:2018-02-25 19:22:17
【问题描述】:
我在使用 Axios 并在 Laravel 路由中发布带有参数对象的帖子时遇到问题。
如果我使用查询参数e.g. ?username=user,则发布请求有效。但如果我使用一个对象,它就会失败:
这里是 Axios 发布请求:
let params =
{
'username': 'help',
'password': 'me'
};
axios.post(
'https://cors.now.sh/https://jumprope.design/test-login', params, {
headers: {
'accept': 'application/json',
'accept-language': 'en_US',
'content-type': 'application/x-www-form-urlencoded',
'_token': 'UawpqT74cr9sr0Uut0lttZPE2YKDb1ckvXYpzNJW'
}
}).then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
});
当我删除参数 obj 并将 ?username=user 附加到 URL 路由时,它可以工作并且我从请求中返回数据。
这是 Laravel (5.1) 控制器:
protected function postTestRequest(Request $request)
{
$data = $request::all();
return response()->json($data);
}
在浏览器中点击这条路线或使用邮递员进行测试可以正常工作:https://cors.now.sh/https://jumprope.design/test-login
这里也是 codepen 的链接:CodePen
非常感谢您的帮助或指导。
另外,我已经尝试过https://github.com/mzabriskie/axios#using-applicationx-www-form-urlencoded-format 的建议,但仍然收到相同的结果。
【问题讨论】:
-
如果代码在您将变量作为
GET变量而不是POST变量传递时有效,那么您应该查看服务器端代码。 -
你是如何将路由器连接到函数的?
-
@Dekel 如果我从控制器返回一个 json 响应并使用 axios 到
GET响应,那么一切正常。 -
@Roozbehhz 这里是 routes.php 中的路由的样子
Route::get('test-login', 'AdminController@postTestLogin'); Route::post('test-login', 'AdminController@postTestLogin');我也尝试使用不同的方法返回视图(例如AdminController@getTestLogin,但没有运气 -
控制台中是否打印了任何内容?
标签: javascript ajax laravel vue.js axios