在我的主登录页面中发生事件后,我正试图通过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代码相同。
怎么了?我应该怎么做才能收到控制器的正常响应?
您可以通过直接回显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);