2017-04-12 5 views
0

jQueryライブラリとAjaxを使用してJavaScriptを使用して最初のステップを実行しようとしています。私はHTML形式を読んで、PHPファイルでユーザーの入力を受けたいと思っています。以下は、ウェブサーバへのAjaxを介してフォームを送信するJavaScript関数である:ajaxとjQueryを使用したHTML形式のPHPへの送信

function get_post() { 

    $.ajax({ 
     type : "post", 
     url : "ajax.php", 
     data : $("form").serialize(), 
     cache : false, 
     success: function(data) { 
      console.log(data); 

     } 
    }); 

}。

console.logには正しい入力データが表示され、PHPデバッグ出力も表示されます。これはajax.phpでプログラムされています。 にconsole.log(データ)が得られます。

パラメータ:温度
Sensorknoten:ノード1
スタート:2017年4月20日14時15
終了:2017年4月6日6時30

は明らかに正しいです。ブラウザでのPHP-変数をINGの

エコーができます:

パラメータ:FIELD EMPTY Sensorknoten:フィールドEMPTY スタート:フィールドEMPTY 終了:FIELD EMPTY

AJAXを。 phpはUsersInputという名前のクラスを呼び出します。このクラスは、ユーザーの入力を$ _POSTで取得します。

<form> 
<input type="hidden" name="nodeformsend" value="true"> 
<!-- Page Heading/Breadcrumbs --> 
<div class="row"> 
    <div class="col-lg-12"> 
     <h1 class="page-header">Welcome! 
      <small>Now, you are able to visualize your Data</small> 
     </h1> 
     <ol class="breadcrumb"> 
      <li><a href="index.html">Sensor Monitoring</a> 
      </li> 
      <li class="active">Visualize Data</li> 
     </ol> 
    </div> 
</div> 
<!-- table to select different Nodes --> 
<div class="row"> 
    <div class="col-md-3"> 
     <div class="panel panel-default text-center"> 
      <div class="panel-heading"> 
       <h3 class="panel-title">Select Wireless Sensor Sodes</h3> 
      </div> 
      <div class="col-md"> 
       <select class="form-control" id="location" name="location"> 
       <?php for($i = 1; $i < 13; $i++) : ?> 
         <option name="location[<?php echo $i ?>]" value="Node<?php echo $i ?>">Wireless Senssor Node <?php echo $i ?></option> 
       <?php endfor; ?> 
       </select> 
      </div> 
     </div> 
    </div> 
    <!-- table to select different parameters --> 
    <div class="col-md-3"> 
     <div class="panel panel-default text-center"> 
      <div class="panel-heading"> 
       <h3 class="panel-title">Select Parameteres</h3> 
      </div> 
      <div class="col-md"> 
       <select class="form-control" id="parameter" name="parameter"> 
        <option name="parameter[0]" value="temperature">Temperature</option> 
        <option name="parameter[1]" value="humidity">Humidity</option> 
        <option name="parameter[2]" value="pressure">Pressure</option> 
       </select> 
      </div> 
     </div> 
    </div> 
    <div class="col-md-3"> 
     <div class="panel panel-default text-center"> 
      <div class="panel-heading"> 
       <h3 class="panel-title">Begin of Timestamp</h3> 
      </div> 
      <div class="input-group date" id="datetime-start" data-date-format="dd-mm-yyyy" >           
       <div class="input-group-addon"> 
        <i class="glyphicon glyphicon-calendar"></i> 
       </div> 
       <input class="form-control" name="datetime-start" type="text" placeholder="YYYY-MM-DD HH:MM"> 
      </div> 
     </div> 
    </div> 
    <!-- table to select Timestamps--> 
    <div class="col-md-3"> 
     <div class="panel panel-default text-center"> 
      <div class="panel-heading"> 
       <h3 class="panel-title">End of Timestamp</h3> 
      </div> 
      <div class="input-group date" id="datetime-end" data-date-format="dd-mm-yyyy" >           
       <div class="input-group-addon"> 
        <i class="glyphicon glyphicon-calendar"></i> 
       </div> 
       <input class="form-control" name="datetime-end" type="text" placeholder="YYYY-MM-DD HH:MM"> 
      </div> 
     </div> 
    </div> 
</div> 
<input id="submit" type="button" value="submit" onclick="get_post();"> 

EDIT:

<?php 
require_once 'includes/autoload.php'; 


/* 
* get users input from HTML-Form 
* @param object: $userIn 
*/ 

$userIn = new UserInput(); 
$param = $userIn->getParams(); 
$node = $userIn->getNodes(); 
$start = $userIn->getStartdate(); 
$end = $userIn->getEnddate(); 
//debug output 
echo "Parameter: $param"; 
echo"<br />"; 
echo "Sensorknoten: $node"; 
echo"<br />"; 
echo "Start: $start"; 
echo"<br />"; 
echo "End: $end"; 
echo"<br />"; 
?> 

これは、HTML形式である:変数UserInputの異なる$ _POST-方法は、この

public function getNodes() { 
    $location = isset($_POST['location'])?$_POST['location']:"FIELD EMPTY"; 
    return $location; 
} 

ajax.phpにsimilairです

はい、もちろんです!ここにあります:

<?php 
//__________This class parse the usersinput UI__________ 

class UserInput{ 
    /** 
    * get Nodes from UsersInput 
    * $location = Node[i] 
    */ 
    public function getNodes() { 
     $location =''; 
     $location = isset($_POST['location'])?$_POST['location']:"FIELD EMPTY";           //load the inputs of user to a variable as an array 
     return $location; 
    } 
    /** 
    * get Nodes from UI 
    * $parameter = Temperature, Humidty, Pressure 
    */ 
    public function getParams() { 
     $parameter = isset($_POST['parameter'])?$_POST['parameter']:"FIELD EMPTY"; 
     return $parameter; 
    } 
    /** 
    * get Nodes from UI 
    * $start = 'YYYY-mm-DD hh:ii:ss < $end 
    */ 
    public function getStartdate() { 
     $start = isset($_POST['datetime-start'])?$_POST['datetime-start']:"FIELD EMPTY"; 
     return $start; 
    } 
    /** 
    * get Nodes from UI 
    * $end = 'YYYY-mm-DD hh:ii:ss 
    */ 
    public function getEnddate() { 
     $end = isset($_POST['datetime-end'])?$_POST['datetime-end']:"FIELD EMPTY"; 
     return $end; 
    } 
    /** 
    * get Nodes from UI 
    */ 
} 
+1

UserInputオブジェクトの関数を呼び出すときに、グローバル$ _POST変数は、別のファイルで呼び出すと同じではありません。'$ param = $ userIn-> getParams($ _ POST);' – Hulothe

+2

$ _POSTをパラメータとして解析し、グローバル変数としてアクセスしません – Akintunde007

答えて

1

グローバル変数ではなくパラメータとして$ _POSTを使用してみてください。 $ _POSTの値が変更されました。また、クラスを持っているので、オブジェクト指向プログラミングを利用することができます。次に、構造関数を追加し、クラスをインスタンス化するときに、$_POSTをパラメータとして渡します。この方法では、我々はあなたのデータベースにこれらの詳細を保存しようとしている場合は、適切に入力文字列

$userIn = new UserInput($_POST); 
$param = $userIn->getParams(); 
$node = $userIn->getNodes(); 
$start = $userIn->getStartdate(); 
$end = $userIn->getEnddate(); 

そして、あなたのクラスで

<?php 
//__________This class parse the usersinput UI__________ 

class UserInput{ 

    var $variables = array();  

    public function __construct($posted_variables){ 
    try{ 
    if(is_array($posted_variables) && isset($posted_variables)){ 
     $this->variables = $posted_variables; 
     }else{ 
     throw new Exception('Post is empty'.var_dump($variables)); 
     } 
    }catch(Exception $ex){ 
     echo $ex->getTraceAsString(); 
    } 
    } 

    /** 
    * get Nodes from UsersInput 
    * $location = Node[i] 
    */ 
    public function getNodes() { 
     $location =''; 
     $location = isset($this->variables['location'])?$this->variables['location']:"FIELD EMPTY";           //load the inputs of user to a variable as an array 
     return $location; 
    } 
    /** 
    * get Nodes from UI 
    * $parameter = Temperature, Humidty, Pressure 
    */ 
    public function getParams() { 
    //example: 
     $parameter = isset($this->variables['parameter'])?$this->variables['parameter']:"FIELD EMPTY"; 
     return $parameter; 
    } 
    /** 
    * get Nodes from UI 
    * $start = 'YYYY-mm-DD hh:ii:ss < $end 
    */ 
    public function getStartdate() { 
     $start = isset($this->variables['datetime-start'])?$this->variables['datetime-start']:"FIELD EMPTY"; 
     return $start; 
    } 
    /** 
    * get Nodes from UI 
    * $end = 'YYYY-mm-DD hh:ii:ss 
    */ 
    public function getEnddate() { 
     $end = isset($this->variables['datetime-end'])?$this->variables['datetime-end']:"FIELD EMPTY"; 
     return $end; 
    } 
    /** 
    * get Nodes from UI 
    */ 
} 
をサニタイズしてください。また $_POST

からのアクセスを心配する必要はありません

+0

どうすればいいですか? UserInputクラスのグローバル$ _POST? –

+0

私の答えをチェックしてください。あなたのクラスを更新しました。あなたはグローバル – Akintunde007

+0

ああ年を使用する必要はありません、それは働いた。どうもありがとうございます! –

関連する問題