Javascript 带有回调函数的AJAX
在ajax连接中访问数据时遇到问题。不确定我的代码有什么问题。似乎它从未达到第二个功能。有什么想法吗Javascript 带有回调函数的AJAX,javascript,ajax,Javascript,Ajax,在ajax连接中访问数据时遇到问题。不确定我的代码有什么问题。似乎它从未达到第二个功能。有什么想法吗 function fetchgps(callback) { var url = "http://www.instamapper.com/api?action=getPositions&key=584014439054448247"; var myRequest = new XMLHttpRequest(); myRequest.onload = function(e) {x
function fetchgps(callback)
{
var url = "http://www.instamapper.com/api?action=getPositions&key=584014439054448247";
var myRequest = new XMLHttpRequest();
myRequest.onload = function(e) {xml_loaded(e, myRequest, callback);}
myRequest.open("GET", url);
myRequest.setRequestHeader("Cache-Control", "no-cache");
myRequest.setRequestHeader("wx", "385");
myRequest.send(null);
return myRequest;
}
function xml_loaded(event, request, callback)
{
if (request.responseText){
var obj = {error:false, errorString:null}
var data = myRequest.responseText;
collected=data.split(","); //parses the data delimited by comma and put data into array
obj.latitude = collected[4];
obj.longitude = collected[5];
callback(obj);
}
else
{
callback ({error:true, errorString:"XML request failed. no responseXML"}); //Could be any number of things..
}
}
function dealwithgps(obj)
{
lat = obj.latitude;
lon = obj.longitude;
document.write(lon);
document.write(lat);
}
fetchgps(dealwithgps);
而不是request.onload
function fetchgps(callback)
{
var url =
"http://www.instamapper.com/api?action=getPositions&key=584014439054448247";
var myRequest = new XMLHttpRequest();
// myRequest.onload = function(e) {xml_loaded(e, myRequest, callback);}
myRequest.onraedystatechange = function() { //onraedystatechange instead of onload!!
xml_loaded(myRequest, callback);
}
myRequest.open("GET", url);
myRequest.setRequestHeader("Cache-Control", "no-cache");
myRequest.setRequestHeader("wx", "385");
myRequest.send(null);
return myRequest;
}
function xml_loaded(request, callback) {
if(request.readyState === 4) {
//... only then do your processing
}
}
已经尝试过了…我从浏览器中收到一个错误…“完成该操作所需的数据尚不可用”您必须检查myRequest.readystate并仅在就绪状态为4时进行处理。检查我的答案。这至少让我比以前更进一步了。我添加了if((request.readyState==4)和&(request.status==200)。但是我没有达到这些状态,它会向回调抛出一个错误。不确定为什么,如果我以不同的方式执行,它会很好。这似乎是一个范围问题……我通过在readyState语句下面添加以下行进行测试。/alert(request.responseText);我收到了警报消息。有什么想法吗?找到了…我在xml_加载函数中的“Else”语句被绊倒了,尽管匹配的if语句if((request.readyState==4)和&(request.status==200)。不确定原因,但它返回了一个错误。我刚刚在Else中否定了if语句,它工作正常。感谢您的帮助