使用AJAX和CodeIgniter的简单示例?

时间:2013-10-26 13:20:50

标签: ajax codeigniter

这里有一个简单,有效的AJAX网页示例,它通过简单的按钮命令显示文本文件中的数据,而无需刷新页面。

ajax_test.php

<script>

    function loadXMLDoc()
    {
        var xmlhttp;

        if(window.XMLHttpRequest) // code for IE7+, Firefox, Chrome, Opera, Safari
        {
            xmlhttp = new XMLHttpRequest();
        }
        else // code for IE6, IE5
        {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange = function()
        {
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
            {
                document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
            }
        }

        xmlhttp.open("GET", "ajax_info.txt", true);
        xmlhttp.send();
    }

</script>

<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<button type="button" onclick="loadXMLDoc()">Change Content</button>

我试图以完全相同的方式使用它,除非通过CodeIgniter。我的页面使用以下编码显示。

pages.php

<?php 
    // To avoid outside users from accessing this file
    if(!defined('BASEPATH')) exit('No direct script access allowed');

    class Pages extends CI_Controller
    {   
        // Default method if one has not been requested within the URL
        public function view($page = "home")
        {
            if(!file_exists('application/views/pages/'.$page.'.php')) // If the page does not exist
            {
                // Whoops, we don't have a page for that!
                show_404();
            }

            $data["main_url"] = $this->config->item("base_url")."z_my_folders/";
            $data["title"] = ucfirst($page); // Capitalize the first letter

            $this->load->view("templates/header", $data);
            $this->load->view("pages/".$page, $data);
            $this->load->view("templates/footer");
        }
    }

所有这一切都是在调用“view”方法时显示网页(例如,pages / view / ajax_test),同时将服务器的主URL作为字符串,以便分配文件,如图像,CSS和jQuery库通过标题。

header.php

<html>
    <head>
        <link href="<?php  echo $main_url; ?>design.css" rel="stylesheet" type="text/css">
        <title>Kurtiss' Website - <?php echo $title ?></title>
        <script type="text/javascript" src="<?php echo $main_url; ?>jquery/jquery-1.10.2.min.js"></script>
    </head>

ajax_test.php文件显示在CodeIgniter中,但是当按下按钮时,没有任何反应。同样,当文件不在CodeIgniter中时,该文件可以正常工作,但是我试图使其成为可能。

我尝试过研究它,除了所有我能找到的复杂的例子,用户连接到数据库,创建复杂的登录表单,注册表单,聊天室等。我只想要一个简单的例子,就像这样说“是” ,这是AJAX,它适用于CodeIgniter。“

非常感谢。


我编辑了以下代码。

xmlhttp.onreadystatechange = function()
{
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
    }
    else
    {
        alert("ERROR");
    }
}

在CodeIgniter中测试时,警告消息会弹出四次,因此它可能与xmlhttp.readyState有关。

1 个答案:

答案 0 :(得分:1)

现在我知道问题所在;它只是找不到文本文件。为了使它能够工作,我不得不将文本文件重新定位到CodeIgniter的主目录中,或者指定文本文件的位置。

感谢您的帮助。