JavaScript 函数没有响应
Posted
技术标签:
【中文标题】JavaScript 函数没有响应【英文标题】:JavaScript function not responsive 【发布时间】:2008-12-10 12:15:10 【问题描述】:我有以下代码,这是我的小型 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 或 query 永远不会同时传递,只会传递其中一个。
编辑:我也想知道 makewindows 函数是否更有意义,或者保持原样。每种方法有优缺点吗?
【问题讨论】:
所有的“\”是怎么回事?这些是 javascript 中的转义字符。 我不明白你的问题。你想让我们检查你的逻辑还是你的代码? 代码优先,因为它似乎并不奇怪,而且我不确定如果只使用一个参数是否可以有两个参数...,即使我的代码有效我也会想知道这是否是做我想做的最好的方式。 【参考方案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。很棒的工具!
【讨论】:
我在这里检查了 JSLint jslint.com,它给出了大部分丢失的分号和换行错误。查看页面时,我没有收到任何错误。如果只使用过 p 或 query 之一,我的逻辑可以这样使用吗? 嗯,你的 url 应该在 if 语句之前声明,这样当你在 javascript 中进一步使用它时,它会找到一个或另一个。还有一个是'$url' perl,另一个没有'=',比如 url = "get_auction.php?blah";【参考方案2】:我会检查 PHP 正在生成的 HTML。假设 $pk 是一个字符串,看起来你缺少一个开头引号。试试这个:
onclick="update(\'Layer3\',\'2\',\''.$pk.'\',\'0\',)">
【讨论】:
我的逻辑是正确的方法吗?如果只使用其中一个参数,让函数接受两个参数?【参考方案3】:json_encode
是一个 PHP 函数,因此您需要像这样修改该特定行:
child1.document.write(<?php echo json_encode($row2["ARTICLE_DESC"]); ?>);
【讨论】:
这不是这个问题的原因,但是问题是 get_records 从来没有在更新函数中调用,而不是在 makewindows 中。以上是关于JavaScript 函数没有响应的主要内容,如果未能解决你的问题,请参考以下文章
在 Django/Javascript 交互中 POST 没有响应