2017-08-20 21 views
0

<?php include $this->_ script('admin/test.phtml'); ?>を書く必要があります。<div>内のjqueryを使用して動作させます。jqueryでdiv内にphp includeを書き込む方法

私はすでに調査しており、すべての回答でload("file.php")を使用することをお勧めしますが、それはフレームワークであり、ルートが原因で機能しないため、私の場合は機能しません。

私はこれを試してみました、それが動作しませんでした、それはスクリプト内の代わりに、div要素にすることを含んでいます:

<script> 
    $('.btn-group').on('click', '#btn-edit', function(e) { 

    e.preventDefault(); 

    var id = $(this).attr('data-id'); 

    $('#myModal').modal({ 
     backdrop: 'static' 
    }); 
    <?php $_GET['id'] = id;?> 
    var php = "<?php include $this->_script('admin/teste.phtml') ?>"; 

    $('.modal-body').html(php); 

    }); 
</script> 

私はこのコードを試してみました、それはまた、動作しませんでした:

<script> 
    $('.btn-group').on('click', '#btn-edit', function(e) { 

    e.preventDefault(); 

    var id = $(this).attr('data-id'); 

    $('#myModal').modal({ 
     backdrop: 'static' 
    }); 
    <?php $_GET['id'] = id;?> 
    var php = "include $this->_script('admin/teste.phtml')"; 

    $('.modal-body').html('<?php' + php + '?>'); 
    }); 
</script> 
+3

これはうまくいきません。 Phpは、ページをブラウザに送信する前に、サーバーによって実行されます。 Jqueryはブラウザで実行されるので、たとえPHPが正常に挿入されたとしても、あなたのページは(PHPを実行できる)サーバではなく、(javascriptを実行できる)ブラウザだけで処理されます。 – arbuthnott

+0

jQueryはブラウザでクライアント側で実行されるため、ページがブラウザに返される前にサーバ側で実行されているPHPを実行できないということを意味するJavascriptライブラリです。ただし、AJAXを使用してPHP/HTMLページをリクエストし、HTMLを現在のページに挿入することができます – itodd

+0

jQueryでphpを書くことができます。 jQueryがクライアントである一方、phpはサーバー側です。 – Roysh

答えて

0

このようなことを実現する唯一の方法は、jQueryを使用してページをサーバーに戻して、サーバーがPHPを再度処理するようにすることです。

しかし、ファイルには存在しない依存関係が含まれている可能性があるため、ファイルを読み込むだけでは機能しません。

のjQuery:

私はこの問題を解決する方法(私は私の答えの特定のアプリケーションを変更する場合がありますワードプレスを使用してすることが起こることは)これです

jQuery('.btn-group').on('click', '#btn-edit', function(e) { 
    jQuery.ajax({ 
     type: "POST", 
     url: "/", //Or whatever the page you want to use to load this. 
     data: {"custom_php_action": "my_special_action"}, 
     tryCount : 0, 
     retryLimit : 3, 
     success: function(res){ 
      jQuery(".modal-body").html(res); //Div for my response 
     }, 
     error: function(xhr, textStatus, errorThrown) { 
      if (textStatus == 'timeout') { 
       this.tryCount++; 
       if (this.tryCount <= this.retryLimit) { 
        //try again 
        jQuery.ajax(this); 
        return; 
       }    
      return; 
      } 
     } 
    }); 
}); 

PHP(これはどこで何あなたは)自分のページが変更されます構築するために使用されています

function my_custom_controller_function() { 
    if (isset($_POST['custom_php_action']) && $_POST['custom_php_action'] == 'my_special_action') { //Tests for our AJAX conditions 
     //My Code Here -- Make sure whatever response is echoed and not simply returned. 
     //If the function returns a value, then echo it here. 

     //Example 
     echo 'My Response'; 
     //Example 

     //Example 2 
     $data = my_function(); 
     echo $data; 
     //Example 2 

     exit(); //Stop the rest of the page from loading. 
    } 
} 
add_action('wp', 'my_custom_controller_function'); //Control when AJAX kicks in -- we don't want it firing too soon -- or too late. 

をこれはワードプレスやプラグインがロードされた後、火災のWordPressアクションフックを使用しますが、任意の前にテーマファイルが処理されています(フックオーダーが正しく理解されている場合)。フレームワークによっては、使用したいコードをどのように組み込むかによって異なります。

これは、情報の動的読み込みを解決した方法です。うまくいけば、ロード/インクルードしようとしているドキュメントを見つけるために使用しているクラスとオブジェクトの組み合わせがわからないので、この例の解決策をまとめておきたいと思います。あなたが構築しているプラ​​ットフォームの

+0

私はZendを使用しています。このようにしても動作しませんが、PHPを使う必要があります。私はこの問題の解決策はないと思う。 –

+0

私はZendについてほとんど何も知らないが、WordPressはPHP上に構築されているので、原則は同じである。特定のポイントまで実行されるように(できればヘッダーが送信される前に)コードを取得し、出力したいものをエコーし​​てから、スクリプトを終了します。 jQueryスクリプトスニペットはWordPressにはまったく依存せず、divにHTMLを読み込むために機能します。 – Crazycoolcam

関連する問題