在CI中,我使用logsig()方法设置了一个控制器.然后在我的index()方法中,我正在调用一个名为startpage的视图.在我看来,我正在使用JSON在我的视图和我的控制器之间进行异步调用.我该如何编写电话代码.以下是我的代码:
位指示:
function logsig() {
$this->load->view('startpage', $sync);
header('Content-type:application/json'); .............
Run Code Online (Sandbox Code Playgroud)
视图:
<script type="text/javascript" language="javascript">
$(document).ready(function() {
// blink script
$('#notice').blink();
$("#action_button").click(function() {
var username = $("#username").val();
var password = $("#password").val();
var dataString = '&username=' + username + '&password=' + password;
if(username=='' || password=='') {
$('#success').fadeOut(400).hide();
$('#error').fadeOut(400).show();
} else {
$.ajax({
type: "POST",
dataType: "JSON",
url: "processing/logsig.php",
data: dataString,
json: {session_state: true},
success: function(data){
if(data.session_state == true) { // true means user is logged in.
$("#main1").hide();
$('#main1').load('<?=$sync?>').fadeIn();
} else if(data.session_state == false) { // false means user is being registered.
$("#action_button").remove();
$('#success').load('<?=$sync?>');
// onLoad fadeIn
}
}
});
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
您不能让控制器加载视图并同时返回JSON.将JSON部分分解为单独的函数.
一个过于简单的示例可能如下所示:
// Your existing function, but only displaying the view
function logsig() {
$this->load->view('startpage', $sync);
}
// A new function whose sole purpose is to return JSON
// Also notice we're using CI's Output class, a handy way to return JSON.
// More info here: codeigniter.com/user_guide/libraries/output.html
function get_json() {
$this->output->set_content_type('application/json')
->set_output(json_encode(array('foo' => 'bar')));
}
Run Code Online (Sandbox Code Playgroud)
然后,在您的JavaScript中,调用get_json:
$.ajax({
type: "POST",
dataType: "JSON",
url: "<?php echo site_url('processing/get_json.php'); ?>",
// ... truncated for brevity ...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7705 次 |
| 最近记录: |