2015-02-14 4 views
1

Вот на стороне клиента в AngularJS (работает отлично):

$scope.ajaxLogin = function(){ 
    var fn = document.getElementById("username").value; 
    var pw = document.getElementById("password").value; 
    $http({ 
     url: "myurl", 
     method: "POST", 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
     data: { username: fn, password: pw } 
    }).success(function(data, status, headers, config) { 
     // this callback will be called asynchronously 
     // when the response is available 
     $scope.showAlertError(); 
    }).error(function(data, status, headers, config) { 
     // called asynchronously if an error occurs 
     // or server returns response with an error status. 
     $scope.showAlertError(); 
    }); 
}; 

Я ожидаю, чтобы иметь успех, только если пользователь и пароль совпадают. На стороне сервера:

if ($result=mysqli_query($con,$sql)) 
{  
    $rowcount=mysqli_num_rows($result); 
    printf($rowcount); 
    mysqli_free_result($result); 
} 

До AngularJS Я использовал обычную обработку AJAX. это как я сделал раньше:

function ajax_post(){ 
     // Create our XMLHttpRequest object 
     var hr = new XMLHttpRequest(); 
     // Create some variables we need to send to our PHP file 
     var url = "myurl"; 
     var fn = document.getElementById("username").value; 
     var ln = document.getElementById("password").value; 
     var vars = "username="+fn+"&password="+ln; 
     hr.open("POST", url, true); 
     // Set content type header information for sending url encoded variables in the request 
     hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     // Access the onreadystatechange event for the XMLHttpRequest object 
     hr.onreadystatechange = function() { 
     if(hr.readyState == 4 && hr.status == 200) { 
      var return_data = hr.responseText; 

     if(return_data=="1"){ 

      console.log("this is return data"+return_data); 

     }else{ 

      ons.notification.alert({message: 'Login Failed!'}); 

     } 

     } 
     } 
     // Send the data to PHP now... and wait for response to update the status div 
     hr.send(vars); // Actually execute the request 

    } 

Как я могу использовать это с AngularJS? Я пробовал использовать аналогичный код в обработчике успеха, но он всегда переходит в блокировку.

ответ

1

вы попробуете это:

.success(function(data, status, headers, config) { 
    if(status === 200) { 
    var return_data = data; 
    if(return_data==="1"){ 
     location.href = "home.html?username=" + fn; 
    } 
    else{ 
     ons.notification.alert({message: 'Login Failed!'}); 
    } 
    } 
} 
+0

он не работал. все еще получая часть ошибки –

+0

, вы имеете в виду, что получаете: {сообщение: 'Login Failed!'}, что будет означать, что return_data! == "1"? Какова ценность data/return_data? – Manube

+0

добавьте функцию успеха: console.log (данные, статус) и сообщение здесь – Manube

1
$scope.ajaxLogin = function(){ 
    var fn = document.getElementById("username").value; 
    var pw = document.getElementById("password").value; 
    $http({ 
    url: "myurl", 
    method: "POST", 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
    data: { username: fn, password: pw } 
    }).success(function(data, status, headers, config) { 


             //Your server output is received here. 
     if(data){console.log('username and password matches');} 
     else {console.log('username and password does not match');} 



$scope.showAlertError(); 
    }). 
    error(function(data, status, headers, config) { 
    // called asynchronously if an error occurs 
    // or server returns response with an error status. 
    $scope.showAlertError(); 

    }); 

    }; 
Смежные вопросы