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 函数没有响应的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的微 API 没有响应体?

Javascript本地存储条件没有响应[重复]

在 Django/Javascript 交互中 POST 没有响应

创建用户向导第 2 步 javascript 没有响应

没有 Javascript 的响应式导航栏,仅使用 HTML 和 CSS

下载按钮和输入字段在 JavaScript 中单击按钮时没有响应