2017-07-04 68 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

相關問題