Angular.js表单POST返回错误405方法不允许

时间:2016-08-04 04:50:24

标签: javascript angularjs

我在尝试提交表单时遇到405错误。这是我的控制者:

'使用严格的';

<div class="zip-popup text-center">
    <div class="popup-container">
        <form name="zipForm" class="zip-form" ng-submit="submitForm(zipForm.$valid)" novalidate>
            <input ng-model="user.zipCode" ng-pattern="regex" name="zipCode" class="form-control text-center" placeholder="Your Zip" required />
            <p class="error" ng-show="zipForm.zipCode.$invalid && !zipForm.zipCode.$pristine">A 5 digit zip code is required.</p>
            <button type="submit" class="btn btn-block" ng-disabled="zipForm.$invalid">Submit</button>
        </form>
    </div>
</div>

继承我的观点:

STL(Steriolithographic)

是否需要修改不同的文件或其他内容才能实现此目的?我错过了什么?

3 个答案:

答案 0 :(得分:1)

服务器告诉您特定方法(class AttachmentUploader < CarrierWave::Uploader::Base # Include RMagick or MiniMagick support: # include CarrierWave::RMagick # include CarrierWave::MiniMagick # Choose what kind of storage to use for this uploader: storage :file # storage :fog # Override the directory where uploaded files will be stored. # This is a sensible default for uploaders that are meant to be mounted: def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end def extension_white_list %w(zip) #%w(pdf doc htm html docx) end end GETPOSTPUTPATCH等)可以&#39;被服务器接受。这很可能是因为您的API路由/端点没有配置DELETE方法。

例如,在ExpressJS中,您需要通过执行以下操作来配置接受POST的路由:

POST

有关app.post('/leads', function (req, res) { res.send('POST request to the homepage'); }); 错误的更多信息,click here

答案 1 :(得分:0)

几周前我有类似的问题。事实证明,服务器只接受标头中特定类型的'Content-Type'

然而,将Content-Type更改为application / json解决了这个问题:

$http({
    method  : 'POST',
    url     : '/leads',
    data    : $scope.user,
    headers : {'Content-Type': 'application/json'} 
})
.success(function(response) {
    $scope.show = false;
})
.error(function(response) {
    console.log(response);
});

P.S。我并不是说这必然会解决您的问题,但这是与此类问题相关的解决方案。只需找出服务器期望的输入类型。

修改

我不是说'application/json'作为Content-Type发送。我所说的只是查找可接受的内容类型并发送该类型的标题。

答案 2 :(得分:0)

您尝试让后端工程师实施OPTIONS方法。

https://en.wikipedia.org/wiki/Cross-origin_resource_sharing#Preflight_example