2015-12-09 4 views
0

Я новый пользователь Angularjs. У меня возникла проблема, когда я отправляю форму регистрации, я применил проверку с помощью AngularJs. В то же время, если все поля ввода действительны, я отправляю вызов $ http Ajax для проверки адреса электронной почты, уже существующего или нет. Проблема заключается в том, что мой php-файл не получил данные электронной почты.Ajax call with angular js

$http({ 
     method : 'POST', 
     async: false, 
     url: 'http://localhost/angular/signup/emailcheck.php', 
     data: { email: $scope.user.email }, // pass in data as strings 
     headers : { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload) 
     }) 
     .success(function(data) 
     { 
      $scope.info = data; 
      if($scope.userForm.$valid && $scope.info === '0') { 
       alert('our form is amazing' + $scope.info); 
      } 
      else{ 
        alert('Already exist'); 
       } 
     }).error(function(response,status) 
     { 
      console.log('ERROR HERE'+ status); 
     }); 

Мой код Php Файл:

$email = $_POST['email']; 
$sql = "SELECT * FROM user where username = '".$email."'"; 
$result = mysql_query($sql); 
//fetch tha data from the database 
while ($row = mysql_fetch_array($result)) { 
.... 
.... 
.... 
.... 
.... 
} 

Я проверил и обнаружил, что файл PHP не получить значение электронной почты на всех.

+0

проверить консоль журнала, если вы получаете ошибку? –

+0

Получаете ли вы какие-либо ошибки в консоли браузера? – Achu

+0

Нет, на консоли нет никакой ошибки. Я проверил его. –

ответ

0

Я только что нашел, что в PHP файл,

$ _POST или $ _GET не будет работать, чтобы получить данные. Используйте следующее:

$data = file_get_contents("php://input"); 
$objData = json_decode($data); 
$email = $objData->email; 

В моем случае это работает.

0

Просто гадать: ваш url указывает на localhost, но не имеет номера порта, это необычно, может быть, вы его забыли?

+1

Что необычный об этом? Он по умолчанию будет использовать порт 80, а его сервер (Apache?) Обработает его и запустит свой PHP-скрипт. – Mawg

1
$http({ 
    method : 'POST', 
    async: false, 
    url: 'http://localhost/angular/signup/emailcheck.php', 
    data : $.param($scope.user), // this will definitely wor 
    headers : { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload) 
    }) 
    .success(function(data) 
    { 
     $scope.info = data; 
     if($scope.userForm.$valid && $scope.info === '0') { 
      alert('our form is amazing' + $scope.info); 
     } 
     else{ 
       alert('Already exist'); 
      } 
    }).error(function(response,status) 
    { 
     console.log('ERROR HERE'+ status); 
    }); 
1

Попробуйте удалить http://localhost из URL, а затем посмотреть, может быть CORS.

+0

Да, это звучит liek CORS. OP должен получить плагин для браузера, чтобы разрешить его (и использовать этот браузер только для разработки) – Mawg