1

在这里,我有一个简单、有效的 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 中测试时,弹出了四次 alert 消息,所以可能与 xmlhttp.readyState 有关系。

4

1 回答 1

1

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

谢谢你们的帮助。

于 2013-10-27T11:34:43.867 回答