• 締切済み

load()メソッドは、何故サーバ上でしか使えない

jQueryのload()メソッドは、 何故、サーバ上でしか使えないのでしょうか? もし、ローカル環境で使おうとした場合に 不都合なことでもあるのでしょうか?

  • AJAX
  • 回答数4
  • ありがとう数2

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5081/13278)
回答No.4

FileReaderクラスを使って外部ファイルを変数に読み込んで、その変数の中からjQueryを使ってタグ指定で抜き出すのはダメなのでしょうか。 検証していないのでデバッグが必要かと思いますが、以下のような感じでファイルを変数に読み込んでおいて、その変数に対してjQueryのfindメソッドで抽出すれば同じような結果になると思います。 const reader = new FileReader(); reader.onload = () => {  const readData = reader.result.find('P').text(); }; reader.readAsText("sample.html");

retorofan
質問者

お礼

ご回答ありがとうございます。

retorofan
質問者

補足

ローカル環境で使おうというのが 本題なので、無理ですね。

  • t_ohta
  • ベストアンサー率38% (5081/13278)
回答No.3

> ローカル環境で > 同じフォルダー内の他のHTMLファイルを > 読み込むためのメソッドは無いのでしょうか? 使えるとしたら「FileReaderクラス」ですかね。 jQueryではなくJavaScript(HTML5)の機能ですけど。 先の回答にも書いた通り、悪意を持ったプログラムが埋め込まれたサイトにアクセスして、勝手にローカルファイルを盗み出されたりという問題が起きないよう、セキュリティの観点からローカルファイルへのアクセスは制限が多くなっています。

retorofan
質問者

補足

・HTMLファイルを読み込む これだけでしたら、Objectタグ、iframeタグを生成して ターゲット要素にappendすれば、jQueryのloadメソッドと同等の機能が実現できます。 ・タグを指定して一部だけ抽出する 読み込んだHTMLファイルのp要素だけを抽出する jQuery だと、 $("#target").load("sample.html p"); で実現できます。 さて Vanilla JSでは無理でしょうか? (※ new FileReaderは手作業を要するので論外)

  • t_ohta
  • ベストアンサー率38% (5081/13278)
回答No.2

> 相対パスでも可能だと思いますが? パスの指定は相対パスでも問題ありませんが、プロトコルはHTTP(HTTPS)が使われます。 パスとプロトコルは別モノですので分けて考えましょう。 http:// と file:// はプロトコル(通信方法)の違いなのでどうにもなりません。 URLを指定するとき、プロトコルを省略した場合はそのソフトが補完してくれているだけで、load()関数はHTTPにしか対応していないので http:// と補完して通信します。 file:// には対応していない関数なのです。 また、JavaScript全般の仕様としてセキュリティの観点からローカルファイルへのアクセスは厳しく制限されています。 そのためプログラム上から自動的にローカルファイルにアクセスするような動作は制限を受けます。

retorofan
質問者

補足

>load()関数はHTTPにしか対応していない その点は納得しました。 ローカル環境で 同じフォルダー内の他のHTMLファイルを 読み込むためのメソッドは無いのでしょうか? 例えば、タグを指定して一部だけ抽出する jQuery なら、 $("#div2").load("sample.html p"); 当方は、とりたてて loadメソッドを使いたいということではなく、 div2要素に読み込んだ「sample.html」内の P要素のプロパティを取得したいのです。 可能なら教えてください。

  • t_ohta
  • ベストアンサー率38% (5081/13278)
回答No.1

load() は指定したURLからファイルを読み込む関数です。 URLで指定した先へはHTTP(HTTPS)で接続するのでローカル環境の file:// でのアクセスには対応していません。 ローカル環境でテストしたい場合は、パソコンにWebサーバソフトを入れてテストしましょう。

retorofan
質問者

お礼

ご回答ありがとうございます。

retorofan
質問者

補足

相対パスでも可能だと思いますが?

関連するQ&A

  • jQueryのloadメソッドは外部XMLは読み込めないのでしょうか?

    jQueryのloadメソッドは外部XMLは読み込めないのでしょうか? タグが<aaa></aaa>となっているところの文字を抽出したいのですが外部にあるXMLは読み込めないものでしょうか? $("#my1").load( "http://server.com/hoge.xml .aaa" ); テキストファイルでタグを書くと読み込みが出来るのですが、なぜかXMLにするとうんともすんとも動きません

    • ベストアンサー
    • AJAX
  • jQueryのloadメソッドが時々反映されません

    WEBページのiframeの中に表示させるHTMLにjQueryのloadメソッドを採用して動的に更新をさせています。 <例> $("#test").load("ttest/testtest.txt .moji"); こんなような単純なソースです。 これのWEBページを開いた時五分五分の確率で成功したり失敗したりします。 なお、失敗した場合でもIEをリロードすると正常に動くのですが・・・ なぜこのような失敗が起きるのでしょうか? 原因が全くわかりません・・・ 詳しい方教えていただけませんでしょうか? <環境> Win7 IE8 jQuery1.4.1

  • aspxのページにjQueryのloadメソッドを使ってテキストボック

    aspxのページにjQueryのloadメソッドを使ってテキストボックスに値を反映させることは不可能でしょうか? テキストボックスはこんな感じです。 <asp:TextBox ID="TextBox3" runat="server" Height="72px" TextMode="MultiLine" Width="651px"></asp:TextBox> サーバ上に存在しているテキストファイルのタグを解析してテキストボックスに反映させたいのですが・・・動いてくれません。 $(document).ready(function (){ $("#TextBox3").load("load.txt .div1"); }); そもそも不可能なことをしているのでしょうか?

    • ベストアンサー
    • AJAX
  • PHP5.2.6でのDOMDocumentのloadメソッド

    3時間ほど、はまりました・・・(キ▼д▼;)トホホ・・ MoodleをPHP5.2.6で初期化しようとしたところ、DOMDocumentクラスのloadメソッドがないとのことで、PHPがFatal Errorで落ちてしまいます。 実際、 $m = get_class_methods('DOMDocument'); var_dump($m); を実行すると、確かにありません。 マニュアルにはloadメソッドが載っているのですが。 loadメソッドに代わるメソッド、または何らかの対処方法をご存知の方はいらっしゃらないでしょうか? PHPのバージョンを下げれば、いいのかもしれませんが。 よろしく、お願いします。

    • 締切済み
    • PHP
  • jQueryでloadメソッドを使用して要素を解析して文字列を表示して

    jQueryでloadメソッドを使用して要素を解析して文字列を表示しています。 その文字列が何であるかを判定して後の動作を行いたいのですがどうしても出来ません。 コールバックはうまくいっているみたいなのですが・・・ $(function() { var load1 = $("load1"); $("#load1").load("A.html .flag1", null, function(text, status, XMLHttpRequest) { if ($("#load1").length == "A") { load1.css({ backgroundColor: "red" }); }; alert("text: " + text + "\nstatus: " + status + XMLHttpRequest); }); });

  • jQueryでloadメソッドを使用しているのですがコードの効率化につ

    jQueryでloadメソッドを使用しているのですがコードの効率化についてヒントをください。 こんなコードです。 $("#load1").load("A.html .flag1", function(Text, status) {   if ($("#load1").text() == "A") $("#load1").css({backgroundColor:"red"});  else if ($("#load1").text() == "B") $("#load1").css({backgroundColor:"yellow"}); else if ($("#load1").text() == "C") $("#load1").css({backgroundColor:"blue"}); }); $("#load2").load("B.html .flag1", function(Text, status) {   if ($("#load1").text() == "A") $("#load1").css({backgroundColor:"red"});  else if ($("#load1").text() == "B") $("#load1").css({backgroundColor:"yellow"}); else if ($("#load1").text() == "C") $("#load1").css({backgroundColor:"blue"}); }); $("#load3").load("C.html .flag1", function(Text, status) {   if ($("#load1").text() == "A") $("#load1").css({backgroundColor:"red"});  else if ($("#load1").text() == "B") $("#load1").css({backgroundColor:"yellow"}); else if ($("#load1").text() == "C") $("#load1").css({backgroundColor:"blue"}); }); ・ ・ ・ 指定している要素とloadするURL以外はコードが全く一緒なんですよね これをどうにか効率化出来ないでしょうか?

  • 初歩的な質問なんですが、jqueryの .load( url +セレク

    初歩的な質問なんですが、jqueryの .load( url +セレクタ ) メソッドで同じドメインの外部ファイルを読み込む際のURLを変数で扱う方法はありませんか?

    • ベストアンサー
    • AJAX
  • loadの VanillaJS版は作れますか?

    jQuery load()メソッドの VanillaJS版は作れますか? jQuery load()メソッドはサーバー上で用います。 この代替関数は作れますか? <仕様> ・jQuery等のプラグインは不要 ・ローカル環境でも稼働 ・外部HTMLファイルの一部のみ表示する [メインHTMLファイル] load_parent.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>sample</title> <style> #result { color: red; } </style> </head> <body> <h1>外部ファイルの一部表示</h1> <pre> jQuery load()メソッドの 脱jQuery版 テストです. <仕様> ・サーバー上だけでなく、ローカル環境でも稼働する。 ・リストの「3行目」だけを表示させる。 // jQuery version // $("#result").load("./load_child.html .row:nth-child(3)"); </pre> <hr> <div id="result">読み込み場所</div> </body> </html> [読込HTMLファイル] load_child.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>sample</title> </head> <body> <h1>読み込みファイル</h1> <pre> シンプルなHTMLファイルです. </pre> <ol> <li class="row">1行目</li> <li class="row">2行目</li> <li class="row">3行目</li> <li class="row">4行目</li> <li class="row">5行目</li> </ol> </body> </html> メインHTMLファイル内にJavaScriptでコーディングして 読み込み場所が「3行目」と書き換えられたら 代替関数になり得ます。

  • System.load() と System.loadLibrary() の違いを詳しく教えて!

    javaでwebアプリを開発してます。 ※OSはLinux(Turbo10)、webサーバーはtomcat5です。 ※ネイティブメソッド呼び出しのため、シェアードライブラリをロードします。 そこで質問ですが、 System.load("フルパス付きライブラリファイル名")と System.loadLibrary("ライブラリ名")では 何が違うんでしょうか? JDK1.4のjavadocには一応 load→ダイナミックライブラリとしてローカルファイルシステムからロード loadLibrary→システムライブラリをロードします と書かれていますが、これはloadの場合は実行時にのみ参照しに行き、loadLibraryの場合はメモリ上に持つということでしょうか?

  • simplexml_load_fileのエラー

    AmazonのAPIを使ったWebサイトを作っていて、simplexml_load_fileを使って外部サーバのXMLを読み込もうとしています。 ローカル・サーバ1ではうまくいきますが、サーバ2ではI/O warning : failed to load external entity となり読み込めません。 3つのサーバで使用しているプログラムは全く同じです。 PHPのバージョン、SimpleXMLのRevisionは下記の通り。 ローカル:5.2.5、1.151.2.22.2.35 サーバ1:5.2.9、1.151.2.22.2.46 サーバ2:5.2.9、1.151.2.22.2.46 調べていると、XML文字列の中に実体参照等パースエラーとなる文字が含まれているとこのようなエラーが出るとのことでしたが、該当するような文字列はありませんし、同じプログラムでも別のサーバであれば取得できるのでその可能性は考え辛いですが、この場合の対処方法として、file_get_contentsで一度文字列として受け取ってから、simplexml_load_stringでパースするとあったので、それも試しました。 しかし、simplexml_load_fileであれば数秒で取得できるものが、file_get_contentsだと4分以上かかりました。 できればsimplexml_load_fileで行いたいのですが、上記のような違いが出る可能性として考えられることは何かありますでしょうか。

    • 締切済み
    • PHP

専門家に質問してみよう