2015-11-23 2 views
0

Я пытаюсь отправить значения из AngularJS в PHP, как показано нижеAngularJS, PHP и json_decode

loginService.js

'use strict'; 

app.factory('loginService',function($http) 
{ 
    return{ 
     login:function(user){ 
       var promise = $http.post('data/user.php',user); //send data to user.php 
       promise.then(function(msg){ 
        if(msg.data=='succes') console.log('succes login'); 
        else console.log('error login'); 
       }) 
     } 
    } 
}); 

Мой PHP файл, как показано ниже

user.php

<?php 
    $user=json_decode(file_get_contents('php://input')); 

    if($user->mail=='[email protected]' && $user->pass=='1234') 
    { 
     print 'succes'; 
    } 
    else 
    { 
     print 'error'; 
    } 
?> 

Мой выход как показано ниже

error login 

loginCtrl.js

'use strict'; 

app.controller('loginCtrl',function($scope,loginService) 
{ 
    $scope.login=function() 
    { 
    loginService.login(); 
    } 
}) 

Может кто-нибудь сказать, где моя ошибка ??

Благодаря

Я получаю сообщение об ошибке, как это "<br />↵<b>Notice</b>: Trying to get property of non-object in <b>D:\php\htdocs\login_angularjs\app\data\user.php</b> on line <b>14</b><br />↵""

Как я могу отладить здесь ?? Как, php-файл получает значения? является ли значение отправки файла php?

UPDATE

Я думаю, что я не смог собрать значения из HTML формы. Я даю код формы HTML здесь. Не могли бы вы мне помочь , чтобы выяснить проблему?

login.tpl.html

Welcome : {{user.mail}} 

<div class="bs-example"> 
    <form role="form" name="form1"> 
     <div class="form-group"> 
      <p>Welcome : {{user.mail}}</p> 
      <label for="exampleInputEmail">Mail</label> 
      <input type="text" placeholder="Enter name" 
class="form-control" required ng-model="user.mail"> 
     </div> 
     <div class="form-group"> 
      <label for="exampleInputPassword">Password</label> 
      <input type="password" placeholder="Password" 
id="exampleInputPassword" class="form-control" required 
ng-model="user.pass"> 
     </div> 
     <button class="btn btn-default" type="submit" 
ng-disabled="form1.$invalid" ng-click="login(user)">Submit</button> 
     <p></p> 
    </form> 
</div> 
+2

Вы не показать, как использовать loginService. Кроме того, это плохая идея общаться таким образом. Используйте ответы JSON. 'Json_encode (...)'. в PHP –

+0

, пожалуйста, научитесь использовать правильный интервал при отправке кода ... – gerl

+0

@SharikovVladislav благодарит за ваш ответ. Как я могу использовать json_encode() здесь? Thaks –

ответ

0

Вам нужно что-то вроде этого в PHP:

Helper:

function getReturnObject ($message, $code) { 
    $response = new StdClass(); 
    $response->message = $message; 
    $response->code = $code; 
    return $response; 
} 

Главный код:

print json_encode(getReturnObject('auth is successull', 200); 

Или:

header('HTTP/1.0 403 Forbidden'); 
print json_encode(getReturnObject('auth is bad', 403); 

Тогда в JavaScript вам это нужно:

var module = angular.module('myApp', []); 
module.controller('myCtrl', ['$http', function ($http) { 
    var user = null; // some user 
    $http.post('data/user.php', user) 
    .success(function (data) { 
    // handle response there 
    }) 
    .error(function (data) { 
     console.log('error'); 
    }); 
}]); 
+0

Спасибо @Sharikov Vladislav за ваш ответ. Я использовал '$ user = json_decode (file_get_contents ('php: // input'));'. Должен ли я использовать '$ user = json_encode (file_get_contents ('php: // input'));' ?? Как я могу отлаживать файл PHP? Спасибо –

+0

Посмотрите на [это] (http://stackoverflow.com/questions/18866571/receive-json-post-with-php) post –