2016-04-22 15 views
0

RESTfulサービスに関連する別の質問hereを質問し、DELETE(PUT)に関する別の質問があります。
ユーザー資格情報(ユーザー名/パスワード)私のPUTと一緒に。これは今までの私のDELETEサービスです:PHP RESTfulサービス。 AJAXとDELETEメソッドのユーザー名/パスワード資格情報

$http_req = $_SERVER["REQUEST_METHOD"]; 
switch ($http_req) { 
    case DELETE: 
     $user = $acct->read($_REQUEST["usernameDel"], $_REQUEST["passwordDel"]); // this method used to read db table with 1 record 
     if (!empty($_REQUEST["delTaskId"]) && isset($_REQUEST["usernameDel"]) && isset($_REQUEST["passwordDel"])) { 
      if ($user == true) { 
       $delete  = fopen("php://input", "r"); 
       $data  = stream_get_contents($deleted); 
       $params; 
       parse_str($data, $params); 
       $dropped = $mgr->delete($params["id"]) // calls the method that deletes a particular row based on its id 
       echo $dropped; 
      } 
     }     
} 

これは私が扱っているhtmlページです。現在は200応答を返しますが、私はエラーメッセージを与える

$("#btnDelete").click(function() { 

    $.ajax({ 
      method: "DELETE", 
      url: "TaskService.php", 
      data: { 'username':$("#usernameDel").val(), 'password': $("#passwordDel").val(), 'id': $("#delTaskId").val()}, 
      success: function(theResponse) { 
       alert(theResponse); 
      } 
     }); 
}); 

<form action="TaskService.php" method="POST"> 
<label for="usernameDel">Username</label> 
    <input type="text" name="usernameDel" id="usernameDel" required/><br /> 
<label for="passwordDel">Password</label> 
    <input type="password" name="passwordDel" id="passwordDel" required/><br /> 
<label for="delTaskId">Task ID</label> 
    <input type="text" name="delTaskId" id="delTaskId" required/><br /><br /> 
<button type="button" id="btnDelete">Delete Task</button><br /><br /> 
</form> 

これは私のAjaxコードである(編集-今@Devsに変更を使用して):私はそれがであることを更新します

フォームアクションでは何もしていないので、$_REQUEST[]超球体とは何か関係がありますが、私はそうではありません。私は自分のアカウントクラスに入れました。すべてあまりにもajaxを介して情報を渡すことに精通して
思考?

+0

、TaskService.php内部のPHPコードの最初のブロックですか? –

+0

@Devsはい、それはそのTaskService.phpファイルのすべてです。 – kmancusi

答えて

0

ちょうどajax形式を整理し、またPHPコードの構文エラーです。

注:は私の検証が働いていなかった理由が分かった

アヤックス

$(document).ready(function(){ 

    $("#btnDelete").click(function() { 

     $.ajax({ 
       method: "DELETE", 
       url: "TaskService.php", 
       data: { 'username':$("#usernameDel").val(), 'password': $("#passwordDel").val(), 'id': $("#delTaskId").val()}, 
       success: function(theResponse) { 

        // Output 
        alert(theResponse); // comment this 

        } 
      }); 
    }); 
});     

TaskService.php

<?php 
$http_req = $_SERVER["REQUEST_METHOD"]; 

switch ($http_req) { 
    case DELETE: 
     $user = $acct->read($_REQUEST["username"], $_REQUEST["password"]); // this method used to read db table with 1 record 
     if ($user == true) { 
      $delete  = fopen("php://input", "r"); 
      $data  = stream_get_contents($deleted); 
      $params; 
      parse_str($data, $params); 
      $dropped = $mgr->delete($params["id"]); // calls the method that deletes a particular row based on its id 
      echo $dropped; 
     } 
    break; 
} 
?> 
+0

気が利いていませんが、「メソッド」を使用するためにリファクタリングする方法があります:「ポスト」を行うのではなく「削除」ですか? – kmancusi

+0

上にajaxを編集しました –

+0

私はこのショットを与えましたが、私は "アカウントを見つけることができませんでした"と同じエラー応答を返しています。だからそれはusername/pwを適切に検証していないようです。注:私のhtmlスニペットはフォーム内にありません_それは単にラベルと入力要素です。これは正しい情報を見つけられないことと何か関係がありますか? – kmancusi

0

をテストしたことはありません!私はとても盲目です!
私は、削除アクションがユーザー名、パスワード、およびIDをパラメータとして取っていたという事実を無視していました....そのように、 "php:// input"ファイルが開かれていないためall 3パラメータを解析します。ここで
が働く私の更新PHPです:上記の質問で

// I needed to access the file FIRST before doing anything with the parameters passed from AJAX 
$deleted = fopen("php://input", "r"); 
$data  = stream_get_contents($deleted); 
$params; 
parse_str($data, $params); 

$user_auth = $acctMgr->readAcct($params["username"], $params["password"]); 
     if ($user_auth == true) { 
      $rows = $mgr->delete($params["id"]); 

      echo $rows; 
     } else { 
      echo "User not authenticated"; 
     } 
関連する問題