如何在CodeIgniter上通过json将数据从控制器传递到视图


How to pass data from controller to view via json on CodeIgniter?

在我的主登录页面中发生事件后,我正试图通过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代码相同。

怎么了?我应该怎么做才能收到控制器的正常响应?

您的ajax函数需要json作为响应。

您可以通过直接回显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);