1

ビュー ファイル (searchV.php) に次のコードがあります。

<html>
    <head> 
        <title>Search Domains</title>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        <script>
            function noTextVal(){
                $("#domaintxt").val("");
            }

            function searchDom(){
                var searchTxt = $("#searchTxt").val();
                var sUrl = $("#url").val();

                $.ajax({
                    url : sUrl + "/searchC",
                    type : "POST",
                    dataType : "json",
                    data :  { action : "searchDomain", searchTxt : searchTxt },
                    success : function(dataresponse){
                        if(dataresponse == "found"){
                            alert("found");
                        }
                        else{
                            alert("none");
                        }
                    }

                });
            }
        </script>
    </head>
    <body>

        <form id="searchForm">
                <input type="text" id="searchTxt" name="searchTxt" onclick="noTextVal()" >
                <input type="submit" id="searchBtn" name="searchBtn" value="Search" onclick="searchDom()" />
                <input type="hidden" id="url" name="url" value="<?php echo site_url(); ?>" />
        </form>

        <?php
            var_dump($domains);
            if($domains!= NULL){
                foreach ($domains->result_array() as $row){
                    echo $row['domain'] . " " . $row['phrase1'];
                    echo "<br/>";
                 }
            }

        ?>

    </body>
</html>

以下は私のコントローラーです(searchC.php):

<?php

class SearchC extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('searchM');
    }

    public function index()
    {
        $data['domains'] = $this->searchM->getDomains();
        $this->load->view('pages/searchV', $data);



        switch(@$_POST['action']){
            case "searchDomain":
                echo "test";
                $this->searchDomains($_POST['searchTxt']);
                break;
            default:
                echo "test2";
                echo "<br/>action:" . ($_POST['action']);
                echo "<br/>text:" . $_POST['searchTxt'];
        }
    }

    public function searchDomains($searchInput)
    {
        $data['domains'] = $this->searchM->getDomains($searchInput);
        $res = "";

        if($data['domains']!=NULL){ $res = "found"; }
        else{ $res = "none"; }

        echo json_encode($res);
    }
} //end of class SearchC

?>

これで、スイッチを使用してコントローラーでテストを実行し、渡された json データが成功したかどうかを確認しましたが、常に未定義と表示されます..何が問題なのですか? コントローラーでデータが認識されない理由を誰か説明できますか??

4

2 に答える 2

0

データは正しく返されていると思いますが、コード チェックに問題があります。$.ajax 関数は JSON を解析し、JavaScript オブジェクトに変換します。したがって、次のようにコードを変更する必要があります。

if(dataresponse.res == "found"){ // Changed from dataresponse to dataresponse.res
   alert("found");
}
else{
  alert("none");
}

これはうまくいくはずです。

于 2013-02-02T08:34:40.273 に答える