1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Jquery における「XHR の読み込みに失敗しました」に対処した件

Last updated at Posted at 2025-02-03

*はじめに追記(2025/2/8)
・input type="submit" をjavascript で関数を実行する際に使うのはどうか?
・async : falseは現在非推奨のようだ
という懸念点が分かったため、お役に立つことは難しいかと・・・。

当方、Jqueryを用いてサーバとhtml通信を行っていますが、「XHR の読み込みに失敗しました」というエラーなのかどうかも分からないメッセージに悩まされたので、その状況を越えた件について報告します。

状況

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8"/>
  <title>To Do リスト</title>
</head> 

<body>

  <form>
  <input type="text" id="textdata">	       
  <input type="submit" id="postdata" value="追加">  			
  </form>
  
  <hr>	
   
  <div id="list">
  </div>

  <script src="./jquery-3.7.1.min.js"></script>
  <script> 

  $("#postdata").click(function(){
 
     let dt = new Date();
     let dt_str = String(dt);	
     let text = document.getElementById("textdata").value;
          	     	
     $.ajax({
        	url:'http://localhost/cgi-bin/gettextdata.py',
        	type:'post',
        	data:{"date":dt_str,"text":text},
    	})
    	.done(function(){
        alert("success");
    	})
    	.fail(function(){
        alert("failed");
    	});            
     });

  </script>
	 
</body>
</html>

ブラウザ上で、「追加」ボタンを押しても、"success"とも"fail"とも表示されず、明確なエラーメッセージもありません。コンソール上で「XHR の読み込みに失敗しました」というメッセージが出ます。

image.png

どうしたか

調べたところによると、ajaxが非同期通信であることが関係している模様。
23行目「$.ajax」関数のdata: ~ の行の下に、async:false を追加しました。現状、サーバからのレスポンス到着を待っての処理でいいので、とりあえず解決したと思います。

そもそも、非同期通信が原因かどうかも怪しいところでありました。
別の手法を考えます。

1
0
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?