0

AngularJSで「POST」メソッドでフォームを送信しようとしています。$http を使用して送信しますが、常に「Cannot POST」と 404 エラーが返されます。ルートは正しく、Grunt 経由でアプリを実行した場合にのみ発生します (「GET」による送信は完全に機能します)。アプリは Yeoman を使用して構築されています。

ばかげた問題だと思いますが、うまくいきません。

景色:

<form name="formLogin" ng-submit="login()">

<ul>
    <li>
        <label for="user">User</label>
        <input type="text" id="user" name="user" ng-model="user">
    </li>
    <li>
        <label for="pass">Password</label>
        <input type="password" id="pass" name="pass" ng-model="pass">
    </li>

</ul>

<input type="submit" value="Send">

コントローラー:

    'use strict';
angular.module('myApp')
  .controller('LoginCtrl', function ($scope, $http, $resource) {


    $scope.login = function() {

      var config = {
        url: 'php/login.php',
        method: 'POST',
        data: {
            user: $scope.user,
            pass: $scope.pass
        }
      }; // configuration object

      $http(config)
        .success(function(data, status, headers, config) {
            console.log('success');
            if (data.status) {
              // succefull login

            } else {
              // Wrong login
            }
        })
        .error(function(data, status, headers, config) {
            console.log('error');

        });

    };

  });

Grunt を次のように使用します。

grunt server

なぜそれが起こるのですか?

ありがとう!

4

2 に答える 2

0

Angular はデフォルトで http ポスト リクエストを as として送信しapplication/jsonapplication/x-www-form-urlencoded問題を引き起こす可能性があります。アプリケーションを変更して、受け入れるか、 in にapplication/json置き換えapplication/jsonて、自分でフォームをシリアル化します。詳細については、セクション HTTP ヘッダーの設定の Angular.js doc を参照してください。application/x-www-form-urlencoded$httpProvider.defaults.headers.post

于 2013-08-10T13:15:14.350 に答える