首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript AJAX函数未加载

Javascript AJAX函数未加载
EN

Stack Overflow用户
提问于 2008-12-08 11:25:08
回答 2查看 1.6K关注 0票数 0

我有一个简单的ajax应用程序,我把它拆分成更模块化的应用程序。代码在下面的链接中,我主要做的是添加GetRecordSet函数,并允许fetchcompelte接受将数据放入哪个层的变量。它在thery中应该工作得很好。当我将alert()放入时,代码似乎可以执行了,除了fetchcomplete中的if子句之外。

http://www.nomorepasting.com/getpaste.php?pasteid=22558

这是get_records.php的代码,同样看起来应该没问题

http://www.nomorepasting.com/getpaste.php?pasteid=22559

这是原始的索引php文件

http://www.nomorepasting.com/getpaste.php?pasteid=22560

EN

Stack Overflow用户

回答已采纳

发布于 2008-12-08 12:13:10

首先,我同意Shyam的观点,并为Firefox安装Firebug;这将对javascript调试有很大帮助。

不管怎么说,这句话

代码语言:javascript
运行
复制
xmlHttp.onreadystatechange = FetchComplete(layername);

将把FetchComplete(layername)的结果赋值给xmlHttp.onreadystatechange,这不是您想要的结果。它需要是

代码语言:javascript
运行
复制
xmlHttp.onreadystatechange = FetchComplete;

但是你还有传递layername的问题。

如果您将onreadystatechange定义为匿名内部函数,则可以轻松地使用在其外部定义的变量,因此可以执行以下操作:

代码语言:javascript
运行
复制
function GetAuctionData(pk) {

    var xmlHttp=GetXmlHttpObject();
    var layer = "Layer2";

    if(xmlHttp==null) {
        alert("Your browser is not supported?");
    }

    var url="get_auction.php?";
    url=url+"cmd=GetAuctionData&pk="+pk;
    url=url+"&sid="+Math.random();

    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)
}

在GetAuctionData()中,layer被定义为一个局部变量,但是在匿名函数中是可以访问的,因为您正在创建一个闭包。请注意,我还没有测试过上面的函数,但原则上它应该可以工作。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/349238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档