переменные PHP AJAX в JavaScript - PullRequest
0 голосов
/ 16 декабря 2008

У меня есть код ниже, который ранее работал нормально:

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");
var phpstring = <?php $out = htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); echo("'$out'"); ?>; 
child1.document.write(phpstring); 
//child1.document.write("<?php echo htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");
child1.document.close(); 
}

Часть, которая была запущена, работала нормально в предыдущей версии, в которой javascript заменял row2 ['ARTICLE_DESC'], переменную php на содержимое переменной. Этот файл javascript включен из тега script в php-файл и всегда работал нормально. Я недавно что-то изменил, однако, я не уверен, что конкретно было, но теперь я получаю эти ошибки от firebug:

function makewindows(){
    child1 = window.open ("about:blank");
    child1.document.write("<br />
    <b>Notice</b>: Undefined variable: row2 in <b>C:\Programme\EasyPHP 2.0b1\www\records4\fetchlayers.js</b> on line <b>57</b><br />
    null");
    child1.document.close();
    }

неопределенный строковый литерал в строке 57, а updateByQuery не определен.

Понятия не имею, почему я получаю одну из этих ошибок и почему updateByPk не выдает ошибку. Я еще больше запутался относительно того, что article_Desc расширяется и как. Это происходит с index.php, который имеет ссылку для вызова updateByQuery, которая будет загружать раздел через ajax, который будет иметь ссылку на updateByPk, который будет отображать последний раздел, который будет иметь ссылку на makewindows (), где article_Desc будет относиться к соответствующему $ рк

Все это работало нормально, и я не могу понять, почему это больше не так.

это помогло бы, если бы я вставил куда-нибудь php-файлы?

редактировать.

Я не понимаю, почему это происходит, но я попытался изменить функцию, чтобы она принимала параметр.

function makewindows(html){
child1 = window.open ("about:blank");
child1.document.write(html);
child1.document.close(); 
}

в сочетании с этими двумя фрагментами php

$html = json_encode(htmlspecialchars($row2['ARTICLE_DESC']));

и

<a href='#' onclick='makewindows(/"".$html."/"); return false;'>Click for full description </a></p>

1 Ответ

1 голос
/ 20 декабря 2008

Все указывает на то, что проблема в вашем файле PHP. Вы получаете уведомление от PHP, а не от JavaScript, как вы, возможно, предполагаете.

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

Итак, проблема здесь:

<?php $out = htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); echo("'$out'"); ?>; 

Массив $ row2 не определен, поэтому $ row2 ['ARTICLE_DESC'] не существует. Вы должны проверить, откуда он должен прийти, потому что я не смог найти его в предоставленном вами коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...