我正在开发的网站存在问题。动态加载的div(ajax)在IE9中为空,在firefox上运行效果不佳(php无法编译),我可以在div中读取我的php文件的来源。 我尝试了很多解决方案,比如从GET更改为POST或向URL添加唯一ID或发出异步请求,但内容绝对是空的。有任何想法吗?谢谢
function pageload(hash) {
if(hash == '' || hash == null)
{
document.location.hash = "#php"; // home page
}
if(hash)
{
getPage();
}
}
function getUniqueTime() {
var time = new Date().getTime();
while (time == new Date().getTime());
return new Date().getTime();
}
function getPage() {
var str = getUniqueTime();
console.log(str);
var data = 'page=' + encodeURIComponent(document.location.hash);
$('#content').fadeOut(200);
$.ajax({
url: "loader.php?_=" + str,
type: "POST",
data: data,
cache: false,
success: function (html) {
$('#content').fadeIn(200);
$('#content').html(html);
}
});
}
编辑:
//loader.php
<?
require_once('session.class.php');
require_once('user.class.php');
$se = new session();
$lo = new user();
$se->regenerate();
if(isset($_POST))
{
$alpha = (string) $_POST['page'];
if($alpha == '#php')
{
include 'homeloader.php';
}
else if($alpha == '#cplus')
{
include 'cplusloader.php';
}
else if($alpha == '#web')
{
include 'underloader.php';
}
else if($alpha == '#about')
{
include 'underloader.php';
}
else if($alpha == '#social')
{
include 'socialloader.php';
}
}
else
$page = 'error';
echo $page;
?>
答案 0 :(得分:1)
试试这个:
//on click of a button:
$("#button").live("click", function(){
//get you string data
var str = "test";
//do new version of ajax
$.post("loader.php", {str:str}, function(html){
$('#content').html(html);
});
});
你不再需要做AJAX方法了。$ .post工作很棒
答案 1 :(得分:0)
php doesn't compile
? async request
?实际上没有指定ascync: true
请求是异步执行的,而在版本jQuery 1.8中根本没有同步AJAX请求。附加错误处理程序,您将看到您的请求可能导致错误:
...
cache: false,
success: function (html) {
$('#content').fadeIn(200);
$('#content').html(html);
},
error: function (a,b) {
alert('Error!');
}
...
通常,AJAX由两部分组成 - 客户端和服务器端。我没有在你的问题中看到服务器端。你必须检查它们。做一个简单的loader.php
返回字符串success
并删除所有额外的获取参数。首先在浏览器中测试你的php文件,以确保它有效。检查FireBug是否存在javascript错误......