teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記, 2020.10.27

2020/10/27 06:06

投稿

takyafumin
takyafumin

スコア2335

answer CHANGED
@@ -1,4 +1,41 @@
1
1
  urls.pyにapi_like()へのURL定義がないので、javascriptから呼び出せてないのではないでしょうか?
2
2
 
3
3
 
4
- javascriptのエラーも確認してみてください。
4
+ javascriptのエラーも確認してみてください。
5
+
6
+
7
+ 追記, 2020.10.27
8
+ ---
9
+
10
+ > jsのXMLHttpRequest.responseURLを参照がわからなかったため、
11
+
12
+ 具体例をあげたほうがよかったですね。
13
+ XMLHttpRequestインスタンスから参照できます。
14
+
15
+ 提示のソースですと、以下のようにresponseURLが参照できます。(locationへ代入)
16
+ locationのURLがログイン画面のURLであれば、リダイレクトが発生したと判断してもいいかと思います。
17
+ - https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest/responseURL
18
+
19
+ ```javascript
20
+ <script>
21
+ function api_like() {
22
+ var api_url = "{% url 'register:api_like' user.pk %}";
23
+ var btn_txt = document.getElementById("like");
24
+ var request = new XMLHttpRequest();
25
+ request.onreadystatechange = function () {
26
+ if (request.readyState === 4 && request.status === 200) {
27
+
28
+ // ----- add start -----
29
+ let location = request.responseURL;
30
+ console.log(location);
31
+ // ----- add end -----
32
+
33
+ var received_data = JSON.parse(request.responseText);
34
+ btn_txt.innerText = received_data.like;
35
+ }
36
+ }
37
+ request.open("GET",api_url);
38
+ request.send();
39
+ }
40
+ </script>
41
+ ```