0

開発中のサイトに問題があります。動的にロードされた div (ajax) は IE9 では空であり、Firefox ではうまく動作しません (php はコンパイルされません)。div で php ファイルのソースを読み取ることができます。GET から POST に変更したり、一意の ID を URL に追加したり、非同期リクエストを作成したりするなど、多くのソリューションを試しましたが、コンテンツは完全に空です。何か案は?ありがとう

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 はクライアント側とサーバー側の 2 つの部分で構成されます。あなたの質問にサーバーサイドが投稿されていません。両方をチェックする必要があります。文字列を簡単loader.phpに返すようにしてsuccess、余分な get パラメータをすべて取り除きます。まず、php ファイルをブラウザでテストして、動作することを確認します。FireBug で JavaScript エラーを確認してください ...

于 2012-10-25T17:29:26.277 に答える