ie上的jquery动态内容

时间:2012-10-25 17:15:37

标签: php jquery

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

2 个答案:

答案 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 compileasync 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错误......