0
ネストされたAJAX呼び出しで非常に奇妙な問題が発生しています。最初のポストバックのsuccess
は全体のページを返し、結果として2番目のAJAXコールはsuccess
になりません。私はこれと非常に混同されることがあります。以下は、私がやろうとしているものです:ボタンクリックでajaxMethod()を呼び出す :ネストされたajax呼び出し、最初の応答のポストバック
Page1.aspxのASPボタン:
<asp:Button ID="btnGet" runat="server" Text="Get" OnClientClick="ajaxMethod();" />
ではJavaScript:以下
function ajaxMethod() {
var txtvalue = "123";
$.ajax({
type: "POST",
url: "Page1.aspx/Method1",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{data:'" + txtvalue + "'}"
}).done(function (response) {
ajaxMethod2(response);
});
}
function ajaxMethod2(response) {
if (response.d == "success") {
var ddlVacancyID = 12;
$.ajax({
type: "POST",
url: "Page1.aspx/Method2",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{vacancyId:'" + ddlVacancyID + "'}"
}).done(function (response) {
console.log('res2');
ajaxMethod3(response);
});
} else {
$("#<%=lblMsg.ClientID%>").text(response.d)
}
}
function ajaxMethod3(response) {
console.log('response received');
}
私のASPXです。 csコード:
[WebMethod]
public static string Method1(string data)
{
return "success";
}
[WebMethod]
public static string Method2(int vacancyId)
{
return "success";
}
さらに奇妙な問題は、F1でデバッグするとうまくいくということです1、デバッグなしでは、クライアント側で応答をキャッチせずにサーバー側のメソッドを実行します。
私はそれを初心者であるので、言語に対する私の無知を許してください。 また、私はsuccess
とcomplete
と一緒に試してみましたが、運はありません。
どのように 'ajaxMethod()'関数を呼び出していますか? 'form'要素の提出時にそれを実行しているなら、' preventDefault() 'を使う必要があるように思えます。 –
@Rory McCrossan:ボタンをクリックするとajaxMethod()が呼び出されます – TechHunger
どのようなボタンですか?そのHTMLを質問に追加してください。 –