php - 在 CodeIgniter 中使用 jQuery JSON

标签 php codeigniter

在 CI 中,我使用 logsig() 方法设置了一个 Controller 。然后在我的 index() 方法中调用一个名为 startpage 的 View 。在我看来,我正在使用 JSON 在我的 View 和我的 Controller 之间进行异步调用。我将如何对调用进行编码。下面是我的代码:

Controller :

function logsig() {
$this->load->view('startpage', $sync);
header('Content-type:application/json'); .............

查看:

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

最佳答案

您不能让您的 Controller 同时加载 View 返回 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')));
}

然后,在您的 JavaScript 中调用 get_json:

$.ajax({
    type: "POST",
    dataType: "JSON",
    url: "<?php echo site_url('processing/get_json.php'); ?>",
    // ... truncated for brevity ...
});

关于php - 在 CodeIgniter 中使用 jQuery JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8420312/

相关文章:

php - 如何使用 Codeigniter 删除 URL 中未使用的 $_GET 参数?

php - 如何在索引前添加下划线?

php - mySQL 日期列搞砸了

php - 在特定时间段后从数据库表中删除一行

php - 无法找到您指定的模型 - CodeIgniter 问题

php - 如何使用 codeigniter 通过 CONCAT() 函数更新数据库列值?

php - Codeigniter 查询生成器类结果

angularjs - 如何使用 AngularJS 构建 CodeIgniter 应用程序?

php - 我如何在类别库中进行特色帖子展示

php - 从整个数据库中删除product_id的数据