2016-10-20 4 views
1

Wie der Titel sagte. Ich möchte eine $ http.post Anfrage an mein Backend in PHP machen, aber funktioniert nicht. Lassen Sie mich Ihnen meinen Code heute zeigen:

function obtenerSesion() { 
     return $http.post(loginUrl, 
       {params: { 
        username: 'prueba123', 
        password: 'prueba123'} 
       }) 
      .then(function(response) { 
       debugger; 
       canchas = response.data; 
       return canchas; 
     }) 
     .catch(generarError); 
    } 

In meinem PHP habe ich dies:

. 
. 
22. $nombreUsuario= $_POST["username"]; 
23. $contrasenia= $_POST["password"]; 
. 
. 

ich in der Antwort-Status "200" erhalten, aber error.txt dieser Fang, wenn die PHP auszuführen ist :

Undefined index on line 22

Könnten Sie sagen mir: Warum ist mein php nicht rec die Daten erfassen? Danke!

// EDIT //

login.php

<?php 
$response = array(); 

require("Db.class.php"); 
require("password.php"); 
require("jwt.php"); 

$settings = parse_ini_file("settings.ini.php"); 
$securityToken= '' . $settings["token"]. ''; 

$db = new Db(); 

$nombreUsuario= $_POST["username"]; //email o user 
$contrasenia= $_POST["password"]; 

// $hash = password_hash($contrasenia, PASSWORD_BCRYPT); 


$result = $db->query("SELECT ....); 

if(count($result) == 0){ 
    ... 
    ... 

Wenn ich die $ nombreUsuario = 'prueba123' hard und contrasenia = 'prueba123' $ die php funktioniert perfekt!

+1

'params' ist für Abfrageparameter (dh' $ _GET'). Sie wollen 'data' für' $ _POST', aber dann wollen Sie es auch als 'application/x-www-form-urlencoded' codieren. – Phil

+0

lesen Sie einfach die Zeileneingabe und deserialisieren Sie json, ohne den Standardinhaltstyp von angular $ zu ändern http.post() HTTP-Anfrage – Nedev

Antwort

3

Du schickst dieses Objekt:

{"params":{"username":"prueba123","password":"prueba123"}} 

statt:

{"username":"prueba123","password":"prueba123"} 

richtigen Code:

function obtenerSesion() { 
    return $http.post(loginUrl, 
      { 
       username: 'prueba123', 
       password: 'prueba123' 
      }) 
     .then(function(response) { 
      debugger; 
      canchas = response.data; 
      return canchas; 
    }) 
    .catch(generarError); 
} 

und dann die eingegebenen Rohdaten in PHP lesen und deserialisieren die JSON so:

$postdata = file_get_contents("php://input"); 

$request = json_decode($postdata); 
$nombreUsuario = $request->username; 
$contrasenia = $request->password; 

EDIT: //

Nach einem Chat-Gespräch, dass dies der Code, den ich ihm zur Verfügung gestellten:

function obtenerSesion() { 
    return $http({ 
    method: 'POST', 
    url: loginUrl, 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
    transformRequest: function(obj) { 
    var str = []; 
    for(var p in obj) 
    str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
    return str.join("&"); 
    }, 
    data: {username: 'prueba123', password: 'prueba123'} 
    }).then(function successCallback(response{ 
    debugger; 
    canchas = response.data; 
    return canchas; 
    }, function errorCallback(response) { 
    //do something 
    console.log(response); 
    }); 

Wir die Encodierung Anfrage geändert application/x-www-form-urlencoded für seine spezifischen Bedürfnisse.

+0

Danke für die Antwort, aber ich habe den gleichen Fehler in meinem PHP. –

+0

@FederickJons können Sie mehr von Ihrem PHP-Code veröffentlichen? – Nedev

+0

Ich habe gerade den PHP bearbeitet. –