2017-06-29 42 views
0

Ajax可以成功地提醒發佈數據({"booking":{"testdata":"testdata"}})。問題是php代碼無法獲得$_POST

兩者的JS和PHP存在於同一頁:localhost/booking/index.ctp

這裏是我的代碼:

<script type="text/javascript" src="//code.jquery.com/jquery-2.1.0.min.js"></script> 
    <script> 
        $.ajax({ 

          url: "<?php echo $this->Url->build([ 
          "controller" => "booking", 
          "action" => "index", 
          "_ext" => "ctp", 
          true 
          ]);?>", //This is the current doc 


          type: "POST", 
          dataType:'json', 
          data: {'testdata': 'testdata'} , 
          success: function(data){ 
           // console.log(data); 
           alert(JSON.stringify(data)); 
          } 
         }); 

        </script> 

        <?php 
        if (isset($_POST['testdata'])){ 
         $getv = $_POST['testdata']; 
         echo json_encode($getv); 
        } 
        else { 
         echo "none"; 
        } 
        ?> 
+0

你到底想用這段代碼實現什麼功能? –

回答

0

這應該是在控制器

<?php 
if (isset($_POST['testdata'])){ 
    $getv = $_POST['testdata']; 
    echo json_encode($getv); 
} 
else { 
    echo "none"; 
} 
?> 

,您可以使用,在您的控制器:

public function initialize() 
{ 
    $this->loadComponent('RequestHandler'); 
} 
public function yourFunction() 
{ 
    $yourvar = $this->request->getData('testdata'); 
    $this->set([ 
     'success' => true, 
     'data' => $yourvar, 
     '_serialize' => ['success', 'data'] 
    ]); 
} 

在你的ajax中,你可以使用相同的代碼來測試它。

+0

你的意思是說,不應該在控制器中,因爲從控制器回顯數據是不行的(就像直接訪問超級全局變量一樣);) – ndm