2017-07-04 71 views
0

我们正在编写一个Restful API以便从离子应用程序中调用。我们使用此代码发送角度服务:PHP 7中的删除方法没有收到参数

 .service('ServiceName', function($http) { 
     return { 
      borrarAlumno: function(par) { 
       var link = "http://localhost/ws/index.php"; 
       return $http.delete(link, { 
        id: par.id 
       }) 
      } 
     } 
    }) 

当我们尝试从php读取id参数时,我们什么都没有。这是我们正在使用的代码:

if (isset($_SERVER['HTTP_ORIGIN'])) { 
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); 
    header('Access-Control-Allow-Credentials: true'); 
    header('Access-Control-Max-Age: 86400'); // cache for 1 day 
} 


// Access-Control headers are received during OPTIONS requests 
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { 

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) 
     header("Access-Control-Allow-Methods: GET, POST, DELETE, PUT, OPTIONS"); 

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) 
     header("Access-Control-Allow-Headers:{$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); 

    exit(0); 
} 

$input = file_get_contents('php://input'); 
print_r($_SERVER['REQUEST_METHOD']); 
exit(); 

我们已经与类似的代码试图用PUT得到的参数,GET和POST方法和它的工作。

任何帮助,将不胜感激。

编辑:

这个PHP被称为形式另一个PHP:

class AlumnosAPI 
{ 
    public function API() 
    { 
     header('Content-Type: application/JSON'); 
     $method = $_SERVER['REQUEST_METHOD']; 

     switch ($method) 
     { 
      case 'GET': 
       include('get.php'); 
       break; 
      case 'POST': 
       include('post.php'); 
       break; 
      case 'PUT': 
       include('put.php'); 
       break; 
      case 'DELETE': 
       include('delete.php'); 
       break; 
      default: 
       echo 'NOT SUPPORTED'; 
       break; 
     } 
    } 

} 

编辑2:delete.php的全码

if (isset($_SERVER['HTTP_ORIGIN'])) 
    { 
     header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); 
     header('Access-Control-Allow-Credentials: true'); 
     header('Access-Control-Max-Age: 86400'); // cache for 1 day 
    } 


    // Access-Control headers are received during OPTIONS requests 
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') 
    { 

     if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) 
      header("Access-Control-Allow-Methods: GET, POST, DELETE, PUT, OPTIONS"); 

     if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) 
      header("Access-Control-Allow-Headers:{$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); 

     exit(0); 
    } 

    $valor['borrado'] = 0; 

    include('conexion.php'); 

    $id = ""; 

    //parse_str(file_get_contents('php://input'), $delete); 
    $input = file_get_contents('php://input'); 
    print_r($input); 
    exit(); 

    foreach (array_keys($delete) as $key) 
    { 
    $$key = $delete[$key]; 
    } 

    if ($id != "") 
    { 
    //PREPARAMOS LA SENTENCIA SQL 
    $sql = "DELETE FROM Alumnado WHERE `ID`=?"; 

    $resultado1=$conexion->prepare($sql); 

    $resultado1->bind_param('i', $id); 

    $resultado1->execute(); 

    $valor['borrado'] = $resultado1->affected_rows; 
    } 

    $datos=json_encode($valor); 

    echo $datos; 
+0

你说的删除ID,但如果在PHP代码中你是指删除?只有我看到的选项 –

+0

我们从另一个PHP代码重定向到这个PHP代码,如下所示:[code] case'DELETE': include('delete.php'); break; [/ code] – khaz

+0

继续前进并共享delete.php的代码,并告诉我们是否验证了delete.php实际上被调用了 – Jojo

回答

1

角不发送的请求体DELETE所以你将不得不从URL中读取id。

.service('ServiceName', function($http) { 
     return { 
      borrarAlumno: function(par) { 
       var link = "http://localhost/ws/index.php"; 
       return $http.delete(link, { 
        params : {id: par.id} 
       }) 
      } 
     } 
    }) 

获得通过$_GET['id']而不是file_get_contents('php://input');

+1

它的工作!感谢您的帮助! – khaz

相关问题