我正在尝试在主登录页面中的事件之后通过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代码相同。
有什么问题?我应该做些什么来接受控制器的正常响应?
答案 0 :(得分: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);