Apache port 8080 üzerinde çalışan istiyorsunuz dinamik JavaScript komut yüklü engellerim?

2 Cevap php

Benim kişisel Linode üzerinde çalışan güzel bir PHP / HTML / JS prototip, daha sonra bir iş makinesinin içine atmaya çalışmıştı.

Sayfa bazı JavaScript ile dinamik bir komut dosyası etiketi ekler. Farklı timeslices dayalı Google çizelgeleri bir grup bu güncelleme bulunuyor. Bu kod şöyle görünür:

// jQuery $.post to send the beginning and end timestamps
$.post("channel_functions.php", data_to_post, function(data){
   // the data that's returned is the javascript I want to load
   var script = document.createElement('script');
   var head= document.getElementsByTagName('head')[0];
   var script= document.createElement('script');
   var text = document.createTextNode(data);
   script.type= 'text/javascript';
   script.id = 'chart_data';
   script.appendChild(text);
   // Adding script tag to page
   head.appendChild(script);
   // Call the function I know were present in the script tag
   loadTheCharts();
});

function loadTheCharts() {
   // These are the functions that were loaded dynamically
   // By this point the script tag is supposed be loaded, added and eval'd
   function1();
   function2();
}

Onlar dom eklenmez kadar Function1 () ve fonksiyon2 () yoktur, ama ben tükendi $. Mesaja kadar sonra () loadTheCharts demiyorlar yani bu bir sorun görünmüyor.

Sana anne konusunda uyardım o kirli PHP kodlama biriyim, bu yüzden de ben tipik O'Reilly go-kitaplar okudum ötesinde JavaScript tecrübeli değilim. Ama bu kod benim kişisel dev sunucu üzerinde iyi çalıştı, bu yüzden bu yeni makinede çalışmıyor neden merak ediyorum.

Ben ne söyleyebilirim kurulumunda tek fark, yeni makine bağlantı noktası 8080 üzerinde çalıştığını, bu nedenle 192.168.blah.blah bulunuyor: yerine nicedomain.com / index.php 8080/index.php.

Ben ben "görünümü oluşturulan kaynak" webmaster araçları kullandığınızda kod gerçekten dom eklendi görmek ama kundakçı ben gibi bir hata alıyorum benim anlayış bütün komut etiketler eval'ed olduğunu olsa bile ") (İşlevsiz2 tanımsız" ne zaman ilave edildi.

Benim soru: düzenlendiği kadarıyla göz önüne alındığında, ve makine üzerinde çalıştığını: 8080, herkes İşlevsiz2 gibi bir dinamik olarak yüklenen işlev () üzerindeki Linode üzerinde tanımlı olacak ve değil neden olarak düşünebilirsiniz bir nedeni var 8080 Apache çalışan makine?

2 Cevap

jQuery destekleri javascript yanıtları:

$.post("channel_functions.php", data_to_post, 
       function (data, textStatus, xhr) {loadTheCharts()}, 
       'script');

Ancak, dataType "script" belgelerine göre, bir GET içine bir çapraz etki alanı POST dönecek.

Ile temel sorun eval eval-ed kod kapsamını miras olan eval Eğer jQuery.globalEval kullanabilirsiniz, yerine inç olduğunu. Böyle bir şey deneyin:

$.post("channel_functions.php", data_to_post, 
       function (data, textStatus, xhr) {
           /* data might have errors, which will cause an exception.
              We'll let the default exception handler catch & log it.
            */
           $.globalEval(data);
           loadTheCharts();
       });

Neden sadece responseText eval değil mi? Ben yeni bir komut düğümü oluşturmak için gerek görmüyorum.