Nasıl dinamik Ajax kullanarak JavaScript fonksiyonları yükleyebilirsiniz?

2 Cevap php

(Retorik Soru)

PHP javascript on-the-fly nasıl davrveığını güncellemek istedim ben bugün bir tuhaf senaryo koştu. Bu rahatsız edici, burada ben denedim ne ...

/*
 * ajax-php-javascript-function-loader.php
 *
 * this gets called by AJAX ve defines or re-defines the 
 * definition of dynamicDoStuff()
 */
 <script type="text/javascript">
     function dynamicDoStuff(a,b){
          <?php
          //dynamically defined function behavior
          ?>
     }
 </script>

Yeni javascript yüklü iken, bu yeni işlev tanımının kapsamı yeni komut dosyası etiketleri ile sınırlıydı çünkü bu işe yaramadı. Başka sayfada Script onu okuyamadı.

Yani burada yapmanız gereken şeydir.

/*
 * index.html
 */
 <html>
     <head>
        <script type="text/javascript">
           var dynamicDoStuff;
        </script>
        <!-- Other Head Stuff -->
     </head>
     <body>
         <!-- the body of the site -->
     </body>
 </html>

ve

/*
 * axax-php-javascript-function-loader.php
 */
 <script type="text/javascript">
     dynamicDoStuff = function(a,b){
         <?php
         //dynamically define function behavior
         ?>
     }
 </script>

by defining the name of the function in the header it becomes globally accessible so you can re-purpose it dynamically using ajax ve (php or whatever)

2 Cevap

Yerine sadece

function newFunctionViaAjax() { ... }

yerine kullanabilirsiniz

window['newFunctionViaAjax'] = function newFunctionViaAjax() { ... };

Daha iyi bir yaklaşım, sadece, bu durumda, sizin söz konusu yöntemi benimsemeye hangi davranış gösteren bir bayrak AJAX yöntemi dönüşünü data sahip olabilir.

var ajaxResponseHandler = function(jsonResponse) {
    dynamicDoStuff = jsonResponse.someFlagFromTheServer == someExpectedValue 
         ? staticDoStuffA
         : staticDoStuffB;
};

İdeal olarak, en azından çoğu durumda, AJAX yöntem sadece zaten verileri dönmelidir.

Ayrıca, bu yöntemle, bunun yerine PHP ile JavaScript karıştırma, zaten istemci tarafından yüklenen normal bir JavaScript dosyasında tanımlanan gerekli alternatif davranış olabilir.