简体   繁体   English

如何通过CodeIgniter上的json从控制器传递数据以进行查看?

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

I'm trying to pass data from controller to view via json, after event in my main login page. 我试图在主登录页面中的事件发生后,通过json将数据从控制器传递给json查看。 Login page js looks like: 登录页面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);
        }
    });

 });

And my controller looks like: 我的控制器看起来像:

    <?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);        
    }

}

and after all, when I'm trying to submit data, I should receive an alert with text "all things are beutiful", but the alert is not "poping up". 毕竟,当我尝试提交数据时,我应该收到一条警告消息,内容为“所有事物都是美好的”,但警告不是“弹出”。

Btw i checked it with firebug for response, and the response is the same HTML code from my home_view file. 顺便说一句,我用萤火虫检查了它的响应,并且响应是我home_view文件中的相同HTML代码。

What is wrong? 怎么了? What I should do to receive normall response from controller? 我应该怎么做才能收到来自控制器的正常响应?

your ajax function is expecting json as a response. 您的ajax函数期望json作为响应。

You could accomplish this by echoing json string directly, or having your view render one. 您可以通过直接回显json字符串或使视图呈现一个来完成此操作。

public function login_validation(){

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

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

// js
alert(response.json.message);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM