2016-03-27 13 views
1

私のウェブサイトにapiを設定しようとしています。私は、リクエスト方法に応じて異なるアクションを行う1つのページを持っていたいと思います。すなわち、 GETはリソースを取得し、POSTは新しいものを作成し、PUTは更新し、DELETEは削除します。 $_SERVER['REQUEST_METHOD']変数をテストして、実行する必要のある関数を確認していますが、何らかの理由で、自分のajaxリクエストに関係なく常にgetとして表示しています。あなたの要求がすぐに変換され、あなたが最初にPOSTを得る理由です、実際のP​​HPファイルにリダイレクトされるように

ページ1

var data = { 
      store_id: id, 
      reward: reward, 
      disclaimer: disclaimer, 
      period: period, 
      active: active 
     } 

     //make request to save item 
     $.ajax({ 
       type: "POST", 
       url: 'http://' + '<?php echo $base_url; ?>' + 'api/birthday', 
       data: data, 
       dataType: 'json', 
       //headers: {"X-HTTP-Method-Override": "POST"}, 
       success: function(obj){ 
        console.log(obj); 
        $('#save-modal').dialog('open'); 
       }, 
       error: function(xhr, textStatus, errorThrown){ 
        console.log(arguments); 
        console.log(xhr + '' + textStatus + ' ' + errorThrown); 
       } 
     }); 

2ページ

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    if(isset($_REQUEST['store_id']) && 
     isset($_REQUEST['reward']) && 
     isset($_REQUEST['disclaimer']) && 
     isset($_REQUEST['period']) && 
     isset($_REQUEST['active']) && 
     is_numeric($_REQUEST['active'])){ 
      exit(json_encode(update_birthday_reward(filter_var($_REQUEST['store_id'], FILTER_SANITIZE_NUMBER_INT), filter_var($_REQUEST['reward'], FILTER_SANITIZE_STRING), filter_var($_REQUEST['disclaimer'], FILTER_SANITIZE_STRING), filter_var($_REQUEST['period'], FILTER_SANITIZE_STRING), filter_var($_REQUEST['active'], FILTER_SANITIZE_NUMBER_INT)))); 
    }else{ 
     exit(json_encode($_SERVER['REQUEST_METHOD'])); 
    } 
}else if ($_SERVER['REQUEST_METHOD'] === 'GET') { 
    if(isset($_REQUEST['store_id'])){ 
     exit(json_encode(get_birthday_reward($_REQUEST['store_id']))); 
    }else{ 
     exit(json_encode($_SERVER['REQUEST_METHOD'])); 
    } 
} 
+0

jqueryは独自のファイルにあり、PHPは同じサーバー上の独自のファイルにあります –

+0

返すprint_r($ _ SERVER) –

+0

あなたが使用しているjQueryのバージョンはREQUEST_METHODのままです。 '.../birthday/index.php'のようにURLファイルにphpファイルを追加してみてください。 –

答えて

1

が見えますGETリクエスト

.../birthday/の代わりに.../birthday/index.phpのような実際のPHPファイルを追加してみてください。

関連する問題