1
html要素(elem1
)と、elem1
をそれぞれ隠して表示する2つのJS関数(func1
、func2
)があります。これらのJS関数は個別のajax呼び出しを行い、func2
はfunc1
を内部的に呼び出しています。show()複数のajax呼び出しを上書きしました
問題:func2
に電話する必要があります。内部ではfunc1
が呼び出されます。 func1
を呼び出すと、elem1
が隠れます。 func1
を呼び出した後、私はshow
elem1
にします。しかし、このshow
は機能しません。
JSFiddle:https://jsfiddle.net/46o93od2/21/
HTML:
<div id="elem">
Save ME
</div>
<br/>
<button onclick="func1()" id="func1">Try Func1</button>
<button onclick="func2()" id="func2">Try Func2</button>
JS:
function func1() {
$.ajax({
url: '/echo/json/', //use the correct processing url here
type: "POST",
data: {}, // send in your data
success: function (data) {
//var aData = JSON.parse(data); // there is no data to parse
$('#elem').hide();
},
error: function (xhr, errmsg, err) {
alert('error');
}
});
}
function func2() {
$.ajax({
url: '/echo/json/', //use the correct processing url here
type: "POST",
data: {}, // send in your data
success: function (data) {
//var aData = JSON.parse(data); // there is no data to parse
func1();
$('#elem').show();
},
error: function (xhr, errmsg, err) {
alert('error');
}
});
}
質問は何ですか?あなたのエラーは、解析するためにJSON文字列が返されていないためです。これは動作しますhttps://jsfiddle.net/46o93od2/21/ – spaceman
'func1()'はAJAXのために非同期です。応答が受信されるまで要素を隠すわけではありません。したがって、 'func2'は要素を最初に示します。 – Barmar
フィドルでは、 'JSON.parse(data)'を呼び出さないでください。 jQueryは自動的に解析します。 – Barmar