2015-12-07 54 views
0

我有一個嘗試學習和構建angularjs應用程序的promblem。我只是無法將表單數據保存到mysql ... 我花了幾個小時嘗試一切,它不會工作。Angularjs保存表單輸入到php和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>

反應 JS: 「成功插入!」 NET: 「POST 200 OK msinput.php」 請求頭:「主持人:(myUrl) 的User-Agent:Mozilla的/ 5.0(Macintosh上,英特爾的Mac OS X 10.11; RV:44.0)的Gecko/20100101 Firefox的/44.0 接受:應用/ JSON,文本/無格式,/ 接受語言:EN-US,EN; q = 0.5 接受編碼:gzip,放氣 Referer的:(myUrl) 內容類型:應用/ json; charset = utf-8 Content-Length:2 Connection:keep-alive「

響應報頭: 連接:保持活動 的Content-Length:62 的Content-Type:text/html的 日期:星期一,2015年12月7日21時36分53秒GMT 保持活動:超時= 5,最大值= 100 服務器:Apache/2.4.10(UNIX)的OpenSSL/0.9.8e-FIPS-RHEL5 mod_bwlimited/1.4 而異:用戶代理 X供電-通過:PHP/5.4.37

+0

爲什麼你使用現代的前端框架,但過時的PHP? – schellingerht

+0

使用開發者模式下的網絡標籤查看帖子包含的內容。將$ data的內容打印到屏幕上進行調試。 – schellingerht

+0

$ data is empty ... 它在共享主機服務上運行,我無法安裝到服務器。否則,node.js +一個noSQL數據庫本來是不容易的。 –

回答

0

我是有點讓你的控制器代碼困惑,但在我看來,你準備將var數據發送到服務器。如果這是真的,你必須$ http.post(「msinput.php」,{'data':$ scope.data})...

+0

你是對的我一直在洗澡的代碼太多,我錯過了,謝謝,但仍然只是空分貝插入.. :) –

0

在你的fill()日誌數據中。看看anythign是否在那裏。改變這種

$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. 
}); 
+0

增加了迴應頂@shaneal –

0

首先確保你的數據是否存在:

打開Firefox中的Firebug ,選擇控制檯選項卡

導航到您的Firefox表單,填寫表單並提交。

在控制檯中的最後一行應顯示:

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

點擊此,並期待在POST & JSON標籤,它會顯示每個字段中的所有輸入數據。任何缺失顯然不會去你的分貝。

一旦你知道你的數據正在離開,那麼你可以找出爲什麼它沒有到達。

我也強烈建議您更改爲PDO並停止使用mysql函數,現在已棄用它。

好吧,現在您知道表單中的數據正在離開您的發佈操作。

裏面你msinput.php請執行下列操作

var_dump(file_get_contents(http://input)); 

看看回來在Firebug控制檯。

+0

當我寫「卡特」到形成Firebug的返回: 「JSON 數據 」KATT「 來源 {」 數據 「:」 KATT 「} 成功插入」 所以是的,這工作。 –