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

関数名の後に jquery add index を更新する必要があります

 $(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 に答える
0

これは、AJAX 要求がどのように機能するかではないためです。サーバー側のリクエストでも PHP でもないため、PHP の戻り値を取得することはできません。HTML や JSON などの実際の HTTP 応答をキャッチすることしかできません。関数で結果をエコーするだけで、次のようになります。

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

この方法は、AJAX 要求の応答$strで設定されdataます (そうではありません)。data.str

于 2012-10-23T06:36:08.057 に答える