J'ai un problème très étrange avec les appels AJAX imbriqués. Le success
des premières publications sur toute la page et par conséquent le deuxième appel AJAX success
ne se déclenche pas. Je suis très confus avec ça. Voici ce que je suis en train de faire: appel ajaxMethod() sur le bouton clic:Appel ajax imbriqué, publications sur la première réponse
Page1.aspx bouton 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');
}
est en dessous de mon ASPX. code cs:
[WebMethod]
public static string Method1(string data)
{
return "success";
}
[WebMethod]
public static string Method2(int vacancyId)
{
return "success";
}
Un problème plus étrange est que cela fonctionne bien quand je le débogue via F1 1, tandis que sans le déboguer, jut exécute les méthodes côté serveur sans intercepter la réponse côté client.
S'il vous plaît pardonnez mon ignorance envers la langue, comme je suis un débutant à elle. Notez également, que j'ai essayé avec success
ainsi que complete
, pas de chance.
Comment vous appelez la fonction 'ajaxMethod()'? Si vous le faites lors de la soumission de l'élément 'form', il semble que vous deviez utiliser' preventDefault() '. –
@Rory McCrossan: J'appelle le bouton ajaxMethod() sur le bouton – TechHunger
Quel type de bouton? Pourriez-vous ajouter ce HTML à la question s'il vous plaît –