0

実行中にajaxに独自のコードを更新させる方法はありますか? 私はセッションで多くの作業を行っていますが、可能であれば、これは私の仕事を非常に楽にしてくれます。これは、私が(失敗して)やろうとしていることのようなものです:

<!-- index.php (lots of code omitted) -->
<div id="ajax"><?php include 'ajax.php' ?></div>

<!-- ajax.php -->
<?php
session_start();
if(!isset($_SESSION["test"])) $_SESSION["test"] = "not set";
else $_SESSION["test"] = "set";
?>

<script>
$('#somebutton').click(function(){
    $.ajax({
        url: 'ajax.php',
        dataType: 'html',
        success: function(result){
            $('#ajax').html(result);
            $('#somediv').html('<?php echo $_SESSION["test"] ?>');
        }
    });
});
</script>

私がやろうとしていることが可能であれば、このコードの何が問題になっていますか?

4

1 に答える 1

0

javascript、html、および css のみをサポートするクライアントで、php サーバー側スクリプトを実行しようとしています。

<?php echo $_SESSION["test"] ?>

要素に挿入されたこの php コードは決して実行されず、Html のように解析されます。問題を解決するには、2 つの ajax リクエストを行う必要があります。

別の php ファイルを作成し、これに対して別の ajax リクエストを行う必要があります。

たとえば、ファイルは次のようになります。

ajax2.php :

<?php
start_session();
if(isset($_SESSION["test"))
    echo $_SESSION["test"] ;

?>

JavaScript:

$('#somebutton').click(function(){

   var ajaxCompleted = 0;
   var result1 = '';
   var result2 = '';

   //First call
   $.ajax({
       url: 'ajax.php',
       dataType: 'html',
       success: function(result){

           result1 = result;
           ajaxCompleted++;

           if(ajaxCompleted == 2){
               printResult();
           }
       }
   });

   //Second call
   $.ajax({
       url: 'ajax2.php',
       dataType: 'html',
       success: function(result){

           result2 = result;
           ajaxCompleted++;

           if(ajaxCompleted == 2){
               printResult();
           }

       }
   });

   function printResult(){
      $('#ajax').html(result1);
      $('#somediv').html(result2);
   }
});

私は自分自身を明確にしたことを願っています。

于 2013-09-11T16:27:13.647 に答える