javascript sorunu - php dahil

4 Cevap php

Ben sunucular küçük bir ajax uygulaması temel olarak aşağıdaki yapıştırılan kodu var. Bu makeWindows aslında artcile_desc arasında rsult içeren bir açılır pencere görüntüleme ile, daha önce para cezası çalışıyordu. Ben şimdi sadece gerçek php kodu çıkılır gibi, ancak bu işlevi önce bir hata var gibi görünüyor. Ben yönetici değilim ve bu değişmedi gibi bu, benim sunucu kurulumu ile ilgili bir sorun değildir.

Kundakçı ile aşağıdaki hataları olsun, ama ben ne demek emin değilim.

unterminated string literal
onclick(click clientX=52, clientY=50)1GmRZ%2F...D9g%3D%3D (line 2)
[Break on this error] child1.document.write("<br />\n
1GmRZ%2F...D9g%3D%3D (line 2)
updateByQuery is not defined
onclick(click clientX=29, clientY=17)CLQWYjW1...WlQ%3D%3D (line 2)
[Break on this error] updateByQuery("Layer3", "Ed Hardy");

var xmlHttp
var layername
var url
function update(layer, url) {
    var xmlHttp=GetXmlHttpObject(); //you have this defined elsewhere

    if(xmlHttp==null) {
        alert("Your browser is not supported?");
    }

    xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
            document.getElementById(layer).innerHTML=xmlHttp.responseText;
        } else if (xmlHttp.readyState==1 || xmlHttp.readyState=="loading") {
            document.getElementById(layer).innerHTML="loading";
        }

       //etc
    }

    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}


function updateByPk(layer, pk) {
   url = "get_auction.php?cmd=GetAuctionData&pk="+pk+"&sid="+Math.random();
   update(layer, url);
}


function updateByQuery(layer, query) {
   url = "get_records.php?cmd=GetRecordSet&query="+query+"&sid="+Math.random();
   update(layer, url);
}

function GetXmlHttpObject()
{
    var xmlHttp=null;
    try
    {
        xmlHttp=new XMLHttpRequest();
    }catch (e)
    {

        try
        {
                xmlHttp =new ActiveXObject("Microsoft.XMLHTTP");
        } 
        catch (e) {}

    }
return xmlHttp;
}
function makewindows(){
child1 = window.open ("about:blank");
child1.document.write("<?php echo htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");
child1.document.close(); 
}

Hangi ne olursa olsun ben makeWindows işlevini deneyin sadece html kaynağı değil, php kod sonucu olarak php kodu çıkarır. Bu önceden iyi çalışıyordu, ve ben bu davranışa neden ne değişti emin değilim.

Ben şimdi tüm kodu yapıştırdığınız. Bir hata doğru çözümlenen olmaktan makeWindows önlenmesi, updateByQuery çağıran bir bağlantı tarafından oluşturulan .. sanırım.

edit: ben bu kodu kullandığınızda php ayrıştırılır oluyor:

function makewindows(){
child1 = window.open ("about:blank");
child1.document.write("<?php echo htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");
child1.document.close(); 
}

Ama yukarıdaki kod

php sonucu şudur:

child1.document.write("<br />
58<b>Notice</b>: Undefined variable: row2 in <b>C:\Programme\EasyPHP 2.0b1\www\records4\fetchlayers.js</b> on line <b>57</b><br />
59null");

bir hata cuases hangi

4 Cevap

Öncelikle, belirli bir gösterimde şey kodlamak her zaman, bunu gösterim kırar sadece durumda, bunu yapmadan önce 'özel karakterleri' dönüştürmek gerekir.

child1.document.write("<?php echo htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");

Okumalısınız:

child1.document.write("<?php echo json_encode(htmlspecialchars($row2['ARTICLE_DESC'], ENT_QUOTES)); ?>");

Ben bile json_encode aradığınız neden Ancak, makale azalan bu nedenle bir dize olmalıdır hala oldukça karıştı:

child1.document.write("<?php echo htmlspecialchars($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");

Yeterli olacaktır.

However this would only get populated on page load, I'm guessing that was your intention. If it is not working, view source and make sure its in the source markup.

Ben şikayet ne Kundakçı bilmiyorum, ama ben hemen başka bir şey görüyorum.

Sen Javascript çıkışı PHP kodu olamaz ve onu çalıştırmak için bekliyoruz. JavaScript tarayıcınızda yürütüldüğünde, PHP kodu sunucu üzerinde idam edilmelidir. Temelde tarayıcılarla PHP kodu gibi görünen bir metin dosyası veriyoruz, ancak tarayıcı ile ne yapacağını bilmiyor.

PHP kodu çalıştırmak istiyorsanız, web sunucusu üzerinde bir dosyaya koyun. Sunucudaki dosyaya tarayıcı penceresini gelin ve çıkış penceresinde olacaktır.

JavaScript PHP kodu görüntüler mmm, bu sunucu artık bu something.php PHP yorumlayıcı çalıştırmalısınız biliyor demektir. Sen ayarlarını kontrol etmelisiniz. Ve PHP doğrulamak bozuk değildir falan.

Yanında, göstermek Firebug hata garip, anlamsız gösterir. Belki Gzip veri göndermek için sunucu (veya komut?) Kurdunuz?

PHP kodu bir hata üretiyor gibi görünüyor. (Aslında bu bile size hat 57 üzerinde fetchlayers.js işaret ediyor) Belki hataları işlemek için bir try / catch bloğu ile sarın, ya da en azından göstermek ne hatalar yaşanıyor?

Ayrıca FirePHP bir göz atın - Ben pek kullanmadım, ama çok yararlı & görünüyor Eğer (bu özel http başlıkları ve bir Firefox uzantısı üzerinden yapılır) Firebug'ın konsol penceresinin içine PHP komut dosyası hata ayıklama bilgileri yayarlar sağlar.