Angularjs保存表单输入到php和Mysql

时间:2015-12-07 17:29:56

标签: javascript php mysql angularjs

我有一个试图学习和构建angularjs应用程序的问题。我只是无法将表单数据保存到mysql中... 我花了好几个小时尝试一切,但它只是没有工作。

使用变量时,PHP文件将空查询输入到mysql表中。如果我使用静态信息,它可以正常工作。

谢谢:)



app.controller('addMsgCtrl', function ($scope, $http) {

$scope.fill = function(add) {
var data = {
            addItem: $scope.addItem
        };
$http.post("msinput.php",{'data' : $scope.addItem})
        .success(function(data, status, headers, config){
            console.log("inserted Successfully");
        });
        };

});

$data = json_decode(file_get_contents("php://input"));
$addItem = mysql_real_escape_string($data->addItem);
mysql_connect("localhost", "username", "password") or die(mysql_error()); 
mysql_select_db("stran189_taskma") or die(mysql_error()); 
mysql_query("INSERT INTO message (addItem) VALUES ('$addItem')"); 
Print "Your information has been successfully added to the database."; 

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<form class="add-task" id="newTaskForm" ng-controller="addMsgCtrl" novalidate ng-submit="fill()">
        <div class="form-actions">
          <div class="input-group">
            <input ng-model="addItem" class="form-control" type="text" name="addItem" placeholder="Ny anteckning" />
            <div class="input-group-btn"><button class="btn btn-default" type="submit">
              <i class="glyphicon glyphicon-plus"></i></button>
          </div>
        </div>
        </div> 
      </form>
&#13;
&#13;
&#13;

响应      JS :&#34;已成功插入!&#34;      NET :&#34; POST 200 OK msinput.php&#34;     请求标题:&#34;主持人:(myUrl)     用户代理:Mozilla / 5.0(Macintosh; Intel Mac OS X 10.11; rv:44.0)Gecko / 20100101 Firefox / 44.0 接受:application / json,text / plain, / Accept-Language:en-US,en; q = 0.5 Accept-Encoding:gzip,deflate 推荐人:(myUrl) Content-Type:application / json; charset = utf-8 内容长度:2 连接:保持活力&#34;

响应报头: 连接:保持活力 内容长度:62 内容类型:text / html 日期:星期一,2015年12月7日21:36:53 GMT Keep-Alive:超时= 5,最大= 100 服务器:Apache / 2.4.10(Unix)OpenSSL / 0.9.8e-fips-rhel5 mod_bwlimited / 1.4 变化:用户代理 X-Powered-By:PHP / 5.4.37

3 个答案:

答案 0 :(得分:0)

我对您的控制器代码感到有点困惑,但在我看来,您准备将var数据发送到服务器。如果这是真的,你必须$ http.post(&#34; msinput.php&#34;,{&#39; data&#39;:$ scope.data})...

答案 1 :(得分:0)

填写()日志数据。看看是否有任何标志。这个改变

$http.post("msinput.php",{'data' : $scope.addItem})

到这个

$http.post("msinput.php",{'data' : data})

然后检查您的网络XHR并查看数据是否正确发送到服务器。

另外,为了获得有关服务器所述内容的更多信息,您还可以使用此方法并记录错误:

// Simple GET request example:
$http({
  method: 'POST',
  url: 'msinput.php'
}).then(function successCallback(response) {
    // this callback will be called asynchronously
    // when the response is available
 }, function errorCallback(response) {
      // called asynchronously if an error occurs
      // or server returns response with an error status.
});

答案 2 :(得分:0)

首先确保您的数据存在:

在Firefox中打开Firebug,选择控制台选项卡

在Firefox中导航到您的表单,填写表单并提交。

控制台中的最后一行应显示:

index.html

点击此处查看POST&amp; JSON选项卡,它将显示每个字段的所有输入数据。任何遗漏的东西显然都不会进入你的数据库。

一旦您知道您的数据正在离开,那么您就可以找出它未到达的原因。

我还强烈建议您更改为PDO并停止使用mysql函数,现在已弃用它。

好的,现在您知道表单中的数据正在通过您的帖子操作。

在msinput.php中,执行以下操作

POST http://..../msinput.php

查看firebug控制台中的内容。