回答編集履歴
3
追記2
test
CHANGED
@@ -61,3 +61,19 @@
|
|
61
61
|

|
62
62
|
|
63
63
|
これが質問者さんが期待する動きだと思いますがいかがですか?
|
64
|
+
|
65
|
+
---
|
66
|
+
【追記2】
|
67
|
+
|
68
|
+
下のコメント欄の 2022/08/05 14:58 の私のコメントで「Chrome のディベロッパーツールを使って、適当なところにブレークポイントを置いてデバックしてみることをお勧めします。後で回答欄にサンプルの画像を貼っておきます」と書いた件です。
|
69
|
+
|
70
|
+
//setTimeout(function() { window.location.href = "/home/index"; }, 3000); はコメントアウトして home/index に遷移しないようにしています。
|
71
|
+
|
72
|
+
実行してみると、210 行に制御が飛んでくるのは最初だけで、jQuery ajax 要求に対する応答ではそこには制御は飛んでこないのが分かります。
|
73
|
+
|
74
|
+

|
75
|
+
|
76
|
+
下はその操作の要求・応答を Fiddler を使ってキャプチャしたものです。#15 は jQuery ajax による要求・応答です。もしその応答を受けて再び window.onload が発火するならば、再度 jQuery ajax に要る要求が出るはずですが、そうはなってないのが分かります。
|
77
|
+
|
78
|
+

|
79
|
+
|
2
追記
test
CHANGED
@@ -1,3 +1,63 @@
|
|
1
1
|
想像にすぎませんが、jQuery ajax の応答が帰ってきたとき、window.onload が再び発火するとかではないのでしょうか?
|
2
2
|
|
3
3
|
その辺りを調べてみてはいかがでしょう。
|
4
|
+
|
5
|
+
---
|
6
|
+
|
7
|
+
【追記】
|
8
|
+
|
9
|
+
コードの内容を見てみましたが以下の部分が変です。
|
10
|
+
|
11
|
+
```
|
12
|
+
$(function(){
|
13
|
+
$.ajax({
|
14
|
+
type: "post",
|
15
|
+
・・・
|
16
|
+
});
|
17
|
+
```
|
18
|
+
|
19
|
+
$(function(){ ... }); を外してみたらどうなりますか?
|
20
|
+
|
21
|
+
・・・と言うだけでは説得力がなさそうなので自分の環境で試してみました。以下のコードで、
|
22
|
+
|
23
|
+
|
24
|
+
```
|
25
|
+
function apiHeroesPost2() {
|
26
|
+
var j = { Id: 6, Name: "ガッチャマンの息子" };
|
27
|
+
var jsonString = JSON.stringify(j);
|
28
|
+
|
29
|
+
$.ajax({
|
30
|
+
type: "POST",
|
31
|
+
url: "/api/values",
|
32
|
+
data: jsonString,
|
33
|
+
contentType: "application/json; charset=utf-8"
|
34
|
+
})
|
35
|
+
.done (function (data) {
|
36
|
+
$('#heroes').empty();
|
37
|
+
$.each(data, function (key, val) {
|
38
|
+
var str = val.id + ': ' + val.name;
|
39
|
+
$('<li/>', { html: str }).appendTo($('#heroes'));
|
40
|
+
});
|
41
|
+
|
42
|
+
setTimeout(function() { window.location.href = "/home/index"; }, 3000);
|
43
|
+
})
|
44
|
+
.fail (function (jqXHR, textStatus, errorThrown) {
|
45
|
+
$('#heroes').empty();
|
46
|
+
$('#heroes').text('textStatus: ' + textStatus + ', errorThrown: ' + errorThrown);
|
47
|
+
})
|
48
|
+
}
|
49
|
+
|
50
|
+
window.onload = function() {
|
51
|
+
setTimeout(apiHeroesPost2, 1000);
|
52
|
+
}
|
53
|
+
```
|
54
|
+
|
55
|
+
window.onload の setTimeout(apiHeroesPost2, 1000); で 1 秒後に jQuery ajax で API が呼ばれ、その応答を受けて done のコールバックが呼ばれて以下のように API から帰ってきた data が表示され、
|
56
|
+
|
57
|
+

|
58
|
+
|
59
|
+
そのあと、setTimeout(function() { window.location.href = "/home/index"; }, 3000); で home/index 画面に遷移します。
|
60
|
+
|
61
|
+

|
62
|
+
|
63
|
+
これが質問者さんが期待する動きだと思いますがいかがですか?
|
1
誤字訂正
test
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
想像にすぎませんが、jQuery ajax の応答が帰ってきたとき、window.onload が再び発火するとかではないのでしょうか?
|
2
2
|
|
3
|
-
その辺りを調べてみては
|
3
|
+
その辺りを調べてみてはいかがでしょう。
|