2016-12-14 13 views
1

私はアプリケーションのスクリプト部分(AutoWWW)でMootoolsを動的にロードしています。これは直接HTMLを使用できないためです。Mootools Request.HTMLは未定義を返します

私はRequest.HTMLを使用していますが、ページのhtmlを取得したいのですが、「未定義」メッセージを返します。どうすればこの問題を解決できますか?

マイコード:

function loadScript(url, callback) { 
    // Adding the script tag to the head as suggested before 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 

    // Then bind the event to the callback function. 
    // There are several events for cross browser compatibility. 
    script.onreadystatechange = callback; 
    script.onload = callback; 

    // Fire the loading 
    head.appendChild(script); 
} 

var mootools = new Request({ 
    url: 'http://google.com', 
    method: 'get', 
    onSuccess: function(responseText){ 
     alert(responseText); 
    } 
}); 

loadScript("https://ajax.googleapis.com/ajax/libs/mootools/1.6.0/mootools.min.js", mootools); 
+0

ないあなたがやろうとしている正確に何をしてください、あなたはより良い説明できますか?私には、CDooではないMooToolsのWebサイトからMooToolsメソッドをロードする前にMooToolsライブラリをロードしようとしているようです。 – Sergio

+0

私はちょうど私のポストを編集し、それが混乱していたと私はテストするためにホームページに設定していたので、リクエストのURLを変更しました。基本的に私はGETを使ってgoogle.comのようなURLのHTMLを返し、アラートでそれを表示したい。 loadScript関数はmootoolsではありません。関数は動作し、mootools.min.jsをロードし、ライブラリを使用してGET要求を実行するmootoolsコールバック関数を呼び出します。 – zeddex

答えて

1

あなたが考慮すべき2つのことがあります。 1つはCORSの制限ですが、もう1つはhead.appendChild(script);を実行すると非同期にスクリプトをロードします。

これは、MooToolsがロードされることを意味しますが、callback関数が呼び出されるまで利用できません。この問題を解決するには、内部でloadScript関数内にコールバックがあり、そのコールバック関数の中から、関数の引数として渡された他のコールバックを呼び出す必要があります。

function loadScript(url, callback) { 
 
    // Adding the script tag to the head as suggested before 
 
    var head = document.getElementsByTagName('head')[0]; 
 
    var script = document.createElement('script'); 
 
    script.type = 'text/javascript'; 
 

 
    script.onreadystatechange = callback; 
 
    script.onload = function() { 
 
    new Request({ 
 
     url: 'https://jsonplaceholder.typicode.com/posts/1', 
 
     method: 'get', 
 
     onSuccess: callback 
 
    }).send(); 
 
    }; 
 
    script.src = url; 
 

 
    head.appendChild(script); 
 
} 
 

 
loadScript("https://ajax.googleapis.com/ajax/libs/mootools/1.6.0/mootools.min.js", function(text) { 
 
    alert(text); 
 
});

+0

ありがとう、これはjsonのリクエスト以外のよりmootoolsの機能を実行するベストプラクティスとは何でしょうか?たとえば、関数をPOSTにも呼びたい場合は、関数が互いに内部でパックされ、コールバックがちょっと混乱していることがあります。 – zeddex

+0

@zeddexコールバック内でloadScript関数に渡すと、MooToolsコードを追加できます。そこにMooToolsが追加されています。したがって、例の警告をMooToolsコードに置き換えてください。 – Sergio

関連する問題