在这里,我有一个简单、有效的 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 有关系。