1

メインログインページのイベントの後、json経由でコントローラからビューにデータを渡そうとしています。ログインページ js は次のようになります。

$('#submit_loginform').live('click',function(){

    $("#error_message").fadeIn(500).html("<img src='images/loaders/loader2.gif' alt='loading' />"); // debug message area

    //var login_name  = $("#login").val();
    //var pass        = $("#pass").val();

    var data        = {
        name        : $("#login").val(),
        password    : $("#password").val(),
        ajax        : 1
    }

    $.ajax({
        url: "home/login_validation", // my home controller function "login_validation:
        type: 'POST',
        dataType: 'json',
        data: data,
        success: function (data) {

            if(data.message){
              alert(data.message);
            } 
        },
        error: function (e) {
            console.log(e.message);
        }
    });

 });

そして私のコントローラーは次のようになります:

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Home extends CI_Controller {

    public function index(){

       $data = array(
            "text" => "Welcome",
            "time" => date("Y/m/d")
       );

       $this->load->view('home_view.php', $data);
    }

    public function login_validation(){

        $array = array(
            "message" => "all things are beutiful"
        );

        $data['json'] = json_encode($array);
        $this->load->view('login_view.php', $data);        
    }

}

結局のところ、データを送信しようとすると、「すべてが美しい」というテキストのアラートを受け取るはずですが、アラートは「ポップアップ」しません。

ところで私は応答のためにfirebugでそれをチェックしました、そして応答は私のhome_viewファイルからの同じHTMLコードです。

なにが問題ですか?コントローラから正常な応答を受け取るにはどうすればよいですか?

4

1 に答える 1

1

あなたのajax関数はjsonを応答として期待しています。

これは、json 文字列を直接エコーするか、ビューにレンダリングさせることで実現できます。

public function login_validation(){

    $array = array(
        "message" => "all things are beutiful"
    );

    $data['json'] = $array;
    echo json_encode($data);          
}

// js
alert(response.json.message);
于 2013-07-26T15:46:31.837 に答える