【发布时间】:2013-03-27 18:57:05
【问题描述】:
这是我的代码:
request_xml: function()
{
http_request = false;
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)
{
http_request.overrideMimeType('text/xml');
}
if (!http_request)
{
return false;
}
http_request.onreadystatechange = this.response_xml;
http_request.open('GET', realXmlUrl, true);
http_request.send(null);
xmlDoc = http_request.responseXML;
},
response_xml:function ()
{
if (http_request.readyState == 4)
{
if(http_request.status == 404 && countXmlUrl<=3)
{
countXmlUrl++;
realXmlUrl = xmlUrl[countXmlUrl];
this.request_xml();
}
if (http_request.status == 200)
{
xmlDoc = http_request.responseXML;
alert("need to update3");
this.peter_save_data();
}
}
},
peter_save_data:function()
{
// removed function code
},
奇怪的是,警报触发没有问题,但下面的函数调用给了我这个错误:
Error: this.peter_save_data is not a function
从别处的另一个函数调用同一个该死的函数可以正常工作。
【问题讨论】:
-
我想这是因为您在错误的范围内使用了
this。您是否尝试过将其传递给peter_save_data()函数但像objWhatever.peter_save_data(this)一样调用它? -
这不是完整的代码。缺少的一个重要难题是如何
response_xml被调用——这很重要,因为它将改变this是什么(参见Jared 的评论)。请记住,this可以被认为是“方法调用的接收者”。 -
为什么不用它的限定名来称呼它?
-
@anirudh4444 想象一下上面的代码来自
prototype声明。因此,这是可以使用的最通用的形式。 -
好的,为了清楚起见编辑了帖子...我粘贴完整代码没有问题,但它是一个大文件...
标签: javascript javascript-events