使用JavaScript的AJAX调用
我正在尝试学习如何使用普通JavaScript进行AJAX调用,以摆脱JQuery,转而使用我正在进行的一个小项目,但似乎没有通过xmlhttp.onreadystatechange。有人能指出我做错了什么吗?函数getDVDsAndBluRays在DOMContentLoaded上被调用了?谢谢使用JavaScript的AJAX调用,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,我正在尝试学习如何使用普通JavaScript进行AJAX调用,以摆脱JQuery,转而使用我正在进行的一个小项目,但似乎没有通过xmlhttp.onreadystatechange。有人能指出我做错了什么吗?函数getDVDsAndBluRays在DOMContentLoaded上被调用了?谢谢 应该是这样的,请注意open和send函数的位置: function getDVDsAndBluRays() { console.log("Getting logged"); var xml
应该是这样的,请注意open和send函数的位置:
function getDVDsAndBluRays() {
console.log("Getting logged");
var xmlhttp = new XMLHttpRequest();
var url = 'http://www.omdbapi.com/?t=metropolis&y=&plot=short&r=json';
xmlhttp.open('GET', url, true);
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
console.log("Not getting logged");
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
console.log('responseText:' + xmlhttp.responseText);
var myMovies = JSON.parse(xmlhttp.responseText);
myFunction(myMovies);
}
};
}
function myFunction(myMovies) {
for (var i = 0; i < myMovies.length; i++) {
var title = myMovies[i].Title.toLowerCase().split(' ').join('+');
var year = myMovies[i].Year;
console.log(title + ", " + "year");
}
}
onreadystatechange在调用后执行,当服务答复时,您实际上正在调用该服务您在onreadystatechange处理程序中有.open和.send。把这些放在onreadystatechange函数之外,你就可以开始了 Onreadystatechange是xmlhttp请求中状态发生更改时的事件处理程序,在打开请求并发送之前不会被调用 希望这有帮助 您已将要打开和发送的调用放在onreadystatechange事件处理程序中,因此永远不会调用它们
把它们移到外面。明白了。非常感谢。是的!非常感谢您的解释,谢谢!行。
function getDVDsAndBluRays() {
console.log("Getting logged");
var xmlhttp = new XMLHttpRequest();
var url = 'http://www.omdbapi.com/?t=metropolis&y=&plot=short&r=json';
xmlhttp.open('GET', url, true);
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
console.log("Not getting logged");
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
console.log('responseText:' + xmlhttp.responseText);
var myMovies = JSON.parse(xmlhttp.responseText);
myFunction(myMovies);
}
};
}
function myFunction(myMovies) {
for (var i = 0; i < myMovies.length; i++) {
var title = myMovies[i].Title.toLowerCase().split(' ').join('+');
var year = myMovies[i].Year;
console.log(title + ", " + "year");
}
}