我有以下代码,这是我的小型AJAX应用程序的核心部分。我没有得到任何错误,只是没有任何反应。我猜有一种更有效的方法可以做我想做的事情。
以下是代码:
var xmlHttp
var layername
function update(layer, part, pk, query)
{
if (part=="1")
{
$url "get_auction.php?cmd=GetAuctionData&pk="+pk+"&sid="+Math.random()
}
else if (part=="2")
{
var 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(json_encode(<?php echo $row2["ARTICLE_DESC"]; ?>));
child1.document.close();
}
以及我如何从php调用函数的示例
onclick="update(\'Layer3\',\'2\','.$pk.'\',\'0\',)">'
pk或查询将永远不会同时传递,只会传递其中一个。
编辑:我也想知道makewindows函数获取参数或保持原样是否更有意义。每种方法都有优点和缺点吗?
答案 0 :(得分:1)
看起来您可能有一些javascript错误:
if (part=="1")
{
$url "get_auction.php?cmd=GetAuctionData&pk="+pk+"&sid="+Math.random()
}
else if (part=="2")
{
var url "get_records.php?cmd=GetRecordSet&query="+query+"&sid="+Math.random()
}
使用Firefox并打开javascript控制台以获取javascript错误,然后尝试修复它所抱怨的行。
Javascript会在遇到错误时立即停止运行。
另外,如果您还没有,请结帐firebug。伟大的工具!
答案 1 :(得分:1)
我会检查PHP正在生成的HTML。假设$ pk是一个字符串,看起来你错过了一个开头的报价。试试这个:
onclick="update(\'Layer3\',\'2\',\''.$pk.'\',\'0\',)">
答案 2 :(得分:0)
json_encode
是一个PHP函数,因此您需要像这样修改该特定行:
child1.document.write(<?php echo json_encode($row2["ARTICLE_DESC"]); ?>);