使用带有参数对象的 Axios Post 没有返回数据
Posted
技术标签:
【中文标题】使用带有参数对象的 Axios Post 没有返回数据【英文标题】:No data returned using Axios Post with Parameter Object 【发布时间】: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
,但没有运气
控制台中是否打印了任何内容?
【参考方案1】:
检查您的路由文件并查看您要定位的路由是否使用“POST”方法定义,因为您正在使用“POST”并检查 该路线的目标是“postTestRequest”方法。你的路线肯定有问题。还要检查是否有任何其他路线与它不冲突。
【讨论】:
routes.php 文件对于postTestRequest
函数肯定使用POST
方法。我还禁用了 CSFR 令牌检查,并在 VerifyCsrfToken.php 中间件文件中为此路由添加了一个例外。以上是关于使用带有参数对象的 Axios Post 没有返回数据的主要内容,如果未能解决你的问题,请参考以下文章