2016-11-10 75 views
0

我最近開始使用Ionic開發應用程序。由於我更熟悉MySQL的後端解決方案,我想要做的是:從表單提取證書並將它們發送到MAMP服務器上的php文件。該文件將檢查帳戶是否存在並作出迴應。Ionic:無法將表單數據發送到MAMP服務器上的php

這裏的形式:

<form name="loginForm" novalidate> <!-- ng-submit="LogIn(loginForm)" --> 
     <div class="section-big"> 
      <div id="logo_container"> 
       <img src="img/Logo.png" id="logo"> 
      </div> 

      <div id="login_container"> 
       <input class="login_item" name="email" type="email" ng-model="userdata.email" placeholder="email" ng-minlength="5" required> 
       <input class="login_item" name="password" type="password" ng-model="userdata.password" placeholder="password" ng-minlength="5" required> 
      </div> 
     </div> 

     <span> {{responseMessage}} </span> 

     <div class="section-small"> 
      <button type="button" class="button button-full button-outline button-light login-inactive" ng-show="loginForm.$invalid">LOGIN</button> 

     </div> 
    </form> 

在離子控制器的功能:

$scope.logIn = function(userdata) { 
    $scope.responseMessage = "in treatement"; 

    console.log($scope.userdata.email) 

    var request = $http({ 
     method: 'post', 
     url: 'http://localhost:8888/login.php', 
     crossDomain: true, 
     headers: {'Content-Type' : 'application/x-www-form-urlencoded'}, 
     data: { 
      email: $scope.userdata.email, 
      password: $scope.userdata.password 
     }, 
    }); 
    console.log("passed"); 

    request.success(function(data) { 
     if(data == "1"){ 
      $scope.responseMessage = "Login Successful"; 
     } 
     else { 
      $scope.responseMessage = "Wrong credentialsemai"; 
     } 
    }); 
    console.log("end reached"); 
} 

的login.php中的文件(根據我的調查結果StackSkills):

<?php 
header("Content-Type: application/json; charset=UTF-8"); 
header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: GET, POST'); 

$postdata = file_get_contents("php://input"); 
$request = json_decode($postdata); 
$email = $request->email; 
$password = $request->password; 

include_once 'dbconnect.php'; 

$request = "SELECT * FROM User WHERE email ='$email' AND password = '$password'"; 
$result = $conn->query($request); 

if($result){ 
    echo "1"; 
} 
else { 
    echo "0"; 
} 
?> 

事物狀態: Currentl y,logIn函數被觸發。由於{{ responseMessage }}不會改變,我假設這些信息沒有被髮送/不會從`login.php返回。

有沒有人有一個想法來解決這個問題或替代仍然使用離子到PHP的MySQL?

編輯:
的數據被檢索,但我還是無法把它由於以下錯誤: SyntaxError: Unexpected token N

謝謝!

+1

是啊...一個空的對象'$ scope.userdata = {};' – Hackerman

+0

@Hackerman,呀空對象,這是一個測試的一部分:如果它在那裏,我得到「未定義」,否則「無法讀取未定義的屬性電子郵件...... .. – TanguyH

+0

看,你是declarin的空對象,正確...在下面的行中,你試圖訪問一個不存在的屬性...這就是爲什麼你得到未定義....現在,你確定你要添加'ng-controller'指令給你的html嗎? – Hackerman

回答

1

這個錯誤是因爲你的PHP的第一行是header("Content-Type: application/json; charset=UTF-8");

這意味着它試圖用JSON編碼的響應,但你正在返回字符串中PHP僅10

嘗試以下。

if($result){ 
    echo json_encode(array("status"=>1)); 
} 
else { 
    echo json_encode(array("status"=>0)); 
} 
+0

工作正常!非常感謝解釋! – TanguyH

相關問題