2012-10-23 24 views
1

我想使用AJAX請求從我的Controller類中獲取單個變量的值。但它仍然無法獲取返回的變量。下面是我使用的代碼:CakePHP:無法使用AJAX獲取返回的數據

$(document).ready(function(){ 
      $("#mybutton").click(function(){       
       var userdata = {username : $("#UserUsername").val()}; 
        $.ajax({ 
         type:'POST', 
         url: 'http://localhost/mycakephp/tests/', 
         data: userdata,    
         success: function(data){ 
          alert(data.str); 
         } 
        });   
       }); 
     }); 

控制器類:

<?php 
class TestsController extends AppController { 

    public $name = 'Tests';  

    function index(){ 
     $this->autoRender=false; 
     $str = "valid"; 
     return $str; 
    } 

} 
?> 

我想「$ STR」的變量,但爲什麼警報()結果仍然是「不確定」,這是應該是「有效的」?

回答

0

這是因爲這不是AJAX請求的工作方式。它們不能捕獲任何PHP返回值,因爲它不是服務器端請求,也不是PHP。它所能做的就是捕獲它獲得的實際HTTP響應,像HTML或JSON。你可以只是簡單的迴應,結果在你的函數,它應該做的事:

function index(){ 
    $this->autoRender = false; 
    $str = "valid"; 
    echo $str; // echo rather than return here 
} 

這樣$str然後在AJAX請求data reposonse(所以不是data.str)設置。

0

你需要更新的jQuery插件指數後的函數名

$(document).ready(function(){ 
     $("#mybutton").click(function(){       
      var userdata = {username : $("#UserUsername").val()}; 
       $.ajax({ 
        type:'POST', 
        url: 'http://localhost/mycakephp/tests/index', 
        data: userdata,    
        success: function(data){ 
         alert(data.str); 
        } 
       });   
      }); 
    });