无法POST - AngularJS,PHP(错误404)

时间:2015-12-23 03:32:50

标签: php angularjs http header

我试图将信息发送到PHP页面,但它返回404错误状态。

<form name="registerForm" novalidate>
    <div class="field"><label for="name">name : </label><input type="text" ng-model="register.registerInfo.name" name="name" id="name" autocomplete="off" required ></div>
    <div class="field"><label for="number">number : </label><input type="text" ng-model="register.registerInfo.number" name="number" id="number" autocomplete="off" required ></div>
    <br>
    <button ng-click='registerForm.$valid && register.register()'>send</button>
</form>

app.js的一部分,我使用了ngrouting

    .controller('RegisterCtrl', ['$http', function($http){

    this.registerInfo = {
        name: '',
        number: ''
    };

    this.register = function() {
        var data = {
            name: this.registerInfo.name,
            number: this.registerInfo.number
        };

        $http.post('register.php', data).then(function(data) {
            console.log(data);
        }, function(error) {
            console.error(error);
        });
    };
}]);

register.php

<?php 

$data = json_decode(file_get_contents('php://input'));
echo 'slt';
echo $data->data->name;

http://puu.sh/m4FVO/3e607fd137.png

│   404.html
│   favicon.ico
│   index.html
│   robots.txt
│
├───images
│       yeoman.png
│
├───scripts
│   │   app.js
│   │   connection.php
│   │   register.php
│   │
│   └───controllers
├───styles
│       main.css
│       style.css
│
└───views
        contact.html
        main.html

我想发送注册信息(名称和数字),用PHP分析数据,如果可以,请用MySQL保存。 我不知道为什么它找不到register.php,因为路径似乎正确,可能是服务器的问题?

如果你有任何想法,我会很感激, 感谢。

2 个答案:

答案 0 :(得分:0)

您正在$ http中寻址register.php,就像register.php脚本与基本html文件位于同一目录中一样。但是,您的文件列表似乎表明您的index.html文件位于根目录中,而register.php文件位于“scripts”子目录中。

假设您没有任何特殊的服务器端路由逻辑,您应该更新$ http呼叫中的地址:

$http.post('register.php', data)

$http.post('scripts/register.php', data)



编辑:根据OP

的评论添加了信息

以上答案仍然正确 - 原始代码不正确地引用驻留在“scripts”目录中的register.php文件。修复后,存在另一个问题。

OP正在使用“grunt serve”;但是,grunt服务器不会开箱即用的处理php文件。它是一个简单的服务器,用于提供静态文件(html,js,css等)而无需服务器端处理/执行(php)。查看这个问题/答案,以便在grunt下讨论php:

但是,请考虑安装/运行功能更全面的Web服务器(Apache,IIS等),特别是如果您希望在某些时候部署它。

答案 1 :(得分:0)

所以我已经安装了WAMP,编辑了C:\ wamp \ bin \ apache \ apache2.4.9 \ conf \ httpd.conf并将c:\ wamp \ www更改为我的工作区文件夹,重新启动wamp,我使用localhost而不是localhost:9000现在,我必须使用绝对路径:scripts / register.php不会工作,我必须使用http://localhost/orion/app/scripts/register.php

感谢所有人的帮助。