У меня есть следующий код javascript, который загружается без ошибок, однако функция обновления на самом деле не кажется функциональной, поскольку get_Records.php никогда не загружается. Я не могу проверить, загружен ли get_auction.php так, как он загружен из get_records.php
Одна из моих главных проблем заключается в том, что я поступаю неправильно, когда update () принимает параметры pk и query, так как когда-либо будет использоваться только один из них. Это похоже на плохой взлом и плохую логику, но я не знаю лучшего способа.
Вот код
var xmlHttp
var layername
var url
function update(layer, part, pk, query) {
alert ("update");
if (part=="1") {
alert ("part 1");
url = "get_auction.php?cmd=GetAuctionData&pk="+pk+"&sid="+Math.random()
} else if (part=="2") {
alert ("part 2");
url = "get_records.php?cmd=GetRecordSet&query="+query+"&sid="+Math.random()
}
xmlHttp=GetXmlHttpObject()
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"
}
};
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
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();
}
Я поместил оповещения в функцию обновления, но она не отображается, указав, что функция обновления никогда не вызывается?
Я не хочу и не могу использовать фреймворк, и при этом у меня нет доступа к использованию firebug, поэтому, пожалуйста, не предлагайте эти вещи. Я знаю о них и использую их, когда могу.
Я также хотел бы знать, является ли предпочтительным вызов php из makewindows (), а не просто для того, чтобы makewindows просто принимала параметр ..., есть ли преимущество или недостаток в каждом подходе?
Кажется, я получаю сообщение об ошибке при попытке вызвать функцию, вот как я делаю это в PHP:
echo "<li><a href='#' onclick=update('Layer3','2','0','hello')'>Link 1</a></li>" .
что делает этот HTML, что должно быть хорошо? "\ N";
<li><a href='#' onclick='update('Layer3','2','0','hello')'>Link 1</a></li>
edit: я принял совет tester101 и изменил его на:
echo '<li><a href="#" onclick="update(\'Layer3\',\'2\',\'0\',\'hello\')">Link 1</a></li>' . "\n";
Что все еще дает ошибку. Я, вероятно, в конечном итоге буду использовать ответ Томса, но хотел бы знать, почему это не работает.