2016-08-10 21 views
-1

バニラのJavaScriptを使用してAJAX呼び出しを行う方法を学びたいと思っています。私が取り組んでいる小さなプロジェクトではJQueryから離れるように努力していますが、 xmlhttp.onreadystatechange。誰でも私が間違っていることを指摘できますか(DOMContentLoadedgetDVDsAndBluRays()関数が呼び出されています)?ありがとう!JavaScriptを使用したAJAX呼び出し

function getDVDsAndBluRays() { 
    console.log("Getting logged"); 
    var xmlhttp = new XMLHttpRequest(); 
    var url = 'http://www.omdbapi.com/?t=metropolis&y=&plot=short&r=json'; 

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

    } 
    xmlhttp.open('GET', url, true); 
    xmlhttp.send(); 
    }; 
}  

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

答えて

1
「それは返信するときサービスを呼び出す」し、

onreadystatechange()ハンドラの中に.open()と.send()があります。 onreadystatechange機能の外に置いておいてください。

Onreadystatechange()は、xmlhttp要求の状態が変更されたときのイベントハンドラで、要求を開いて送信するまで呼び出されません。

これが役に立った!

+0

それでした!それを説明してくれてありがとう。 – dedaumiersmith

4

それは、そのようなことオープンの場所に気づくと機能を送信する必要があります: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"); 
    } 
} 

、あなたが実際に

+0

入手しました。ありがとうございました! – dedaumiersmith

1

彼らは呼び出されませんので、あなたは内opensendonreadystatechangeイベントハンドラを呼び出しを入れています。

外に移動します。

+0

ありがとう!しましょう。 – dedaumiersmith

関連する問題