0

我正在开发的网站有问题。动态加载的 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;
 ?>
4

2 回答 2

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 效果惊人

于 2012-10-25T17:33:45.763 回答
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并去掉所有额外的 get 参数。首先在浏览器中测试您的 php 文件以确保它可以正常工作。检查 FireBug 是否有 javascript 错误...

于 2012-10-25T17:29:26.277 回答