У меня есть код ниже, который ранее работал нормально:
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>