У меня есть приложение ASP. NET MVC, и я пытаюсь создать цепочку операций, одну за другой, используя jQuery внутри функции javascript. Функция состоит из трех частей.
Я пытаюсь сделать следующее: если какое-либо условие удовлетворяется, я хочу выполнить синхронный jQuery ajax вызов CheckData. Зависит от полученного результата:
- Возвращается нормально -> Я хочу продолжить выполнение part2 и, наконец, part3 в этом порядке.
- Возвращает Nok ->, затем завершается и возвращается. Он не продолжает выполнять part2 и part3.
Поэтому я установил asyn c: false, но он не работает, программа продолжает выполнять part2 и part3. Я знаю, asyn c: false устарела, так как мне этого добиться?
function onCheckValidData()
{
// do something....
// PART 1 STARTS HERE
if (some_condition_is_satified)
{
$.ajax({
url: '@Url.Action("CheckData", "MyController")',
async: false,
type: "POST",
dataType: "JSON",
beforeSend: function () {
showLoading();
},
success: function (result) {
if (!result.isOk) {
return;
}
},
complete: function(){
hideLoading();
}
});
}
// PART 2 STARTS HERE
// do something.....
// continue doing more thing.....
// more things.....
// PART 3 STARTS HERE
$.ajax({
url: '@Url.Action("MyActionMethod1", "MyController")?' + paramsStr,
type: "POST",
dataType: "html",
beforeSend: function () {
showLoading();
},
success: function (result) {
if (result == 'True') {
jsMethod2(); // jsMethod2 is another javascript method which contains another $.ajax block
}
else if (result == 'False') {
jsMethod3(); // jsMethod3 is another javascript method which contains another $.ajax block
}
else {
alert(result);
}
},
complete: function(){
hideLoading();
}
});
}
Мои действия в контроллере:
private JsonResult CheckData()
{
MyBoolResult res = new MyBoolResult();
// do something....
return Json(new { isOk = res.isOk });
}
public String MyActionMethod1(String param1, String param2, bool param3, string param4, string param5)
{
// do something
return condition ? "True" : "False";
}