在CodeIgniter中使用jQuery JSON

Mic*_*sby 2 php codeigniter

在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)

Col*_*ock 8

您不能让控制器加载视图并同时返回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)