1

我想使用 AJAX 请求从我的 Controller 类中获取单个变量的值。但它仍然无法获取返回的变量。这是我使用的代码:

$(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' 变量,但为什么 alert() 结果仍然是“未定义”,应该是“有效”?

4

2 回答 2

0

那是因为这不是 AJAX 请求的工作方式。他们无法捕获任何 PHP 返回值,因为它根本不是服务器端请求,也不是 PHP。它所能做的就是捕获它获得的实际 HTTP 响应,例如 HTML 或 JSON。你可以简单地在你的函数中回显结果,它应该这样做:

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

$str然后在 AJAX 请求的响应中设置这种方式data(所以不是data.str)。

于 2012-10-23T06:36:08.057 回答
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);
                    }
                });         
            });
     });
于 2016-08-01T11:07:04.907 回答