【问题标题】:AngularJS $http.post 404AngularJS $http.post 404
【发布时间】:2014-03-27 18:21:51
【问题描述】:

我正在尝试使用 $http.post 测试将数据发布到服务器。后端是用 laravel 搭建的。

我只是在学习 Angular,所以没有任何复杂的事情发生。当我尝试发布到 /api 时,我的浏览器控制台中出现 404 错误。如果我在浏览器中打开 URl,它确实存在。页面本身只是返回一些 json。

这是 HTML:

<ul>
    <li ng-repeat="brand in brands">
        <input type="checkbox" name="{{brand.brand_name}}" ng-model="brand.checked" ng-change="getSelectedBrands()">
        {{ brand.brand_name }}
    </li>
</ul>   

以及负责发布数据的控制者部分:

$scope.getSelectedBrands = function() {  
    var data = $filter('filter')($scope.brands, {checked: true});
    $http.post('/api', data).success(function(data, status, headers) {
        //do something
    });        
}

为什么它会在每个复选框选中或取消选中时发布,因为一旦我到达那个阶段,这些复选框将过滤来自数据库的结果。

任何帮助将不胜感激。

谢谢!

使用网络选项卡结果编辑:

【问题讨论】:

  • 您能在 devtools 中打开网络选项卡并向我们显示请求吗?
  • 你没有分享你的服务器端代码,但是阅读了这个victorblog.com/2012/12/20/…。或者我关于 Coldfusion 类似问题的博客文章:jeffryhouser.com/index.cfm/2013/10/1/… 我建议您使用包嗅探器来查看从您的 UI 发送到服务器的内容。如果你和我有同样的问题;那么这就是你的解决方案:$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
  • @IlanFrumer 将网络选项卡中的屏幕截图添加到我的问题中。谢谢
  • 你能发布你的服务器代码吗?
  • @Reboog711 服务器端代码只是从服务器返回 JSON 的路由。它自己工作,所以我认为它与问题不太相关。那条线去哪儿了?谢谢!

标签: php angularjs laravel


【解决方案1】:

如果您在浏览器中打开 URI,您正在执行 GET 请求。您的后端可能设置为响应 GET 路由而不是 POST。

【讨论】:

  • 哦,就是这样。不敢相信这是一个如此简单的错误。感谢您的帮助!
【解决方案2】:

根据 Jeff 的评论,您可能需要在控制器中添加以下内容

$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';

【讨论】:

    猜你喜欢
    • 2016-07-03
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2014-07-04
    • 2023-03-31
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多