#jquery
#jquery
Вопрос:
У меня есть следующее:
$.ajax({
type: "POST",
traditional: true,
url: "/Administration/Locations/DoAction",
data: { partitionKey: id.substring(14),
rowKey: id.substring(4, 14),
action: ac,
datastore: $("#DataSource").val()
},
async: false,
dataType: "json",
timeout: 1000,
success: function (data) {
xx
},
error: function (x, t, m) {
xx
}
Могу ли я упростить это с помощью jQuery для создания post? Обратите внимание, что id и ac являются переменными javascript, назначенными ранее.
Комментарии:
1. Каким образом упростить? Это довольно простой код, но может быть что-то, что можно изменить в контексте вашего другого кода. Не могли бы вы немного подробнее объяснить свой вопрос?
2. Что бы вы хотели упростить там? Для меня это выглядит довольно грубо / просто.
3.
async:false
противоречит цели ajax.4. @AlienWebguy: но в некоторых случаях это необходимо.
5. Насколько проще вы хотите? Если вам нужны асинхронные и традиционные, не совсем уверен, что вы ищете.
Ответ №1:
$.ajaxSetup({async:false});
$.post("/Administration/Locations/DoAction",
{ partitionKey: id.substring(14),
rowKey: id.substring(4, 14),
action: ac,
datastore: $("#DataSource").val()
},
function (data) {
xx
},
"json"
).error(function() {
xx
});
Документация http://api.jquery.com/jQuery.post /
$.post()
такое же, как
$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: dataType
});
Комментарии:
1. Выглядит хорошо. Я просто проверяю эту ссылку, чтобы посмотреть, как я могу установить async: false. Мне это нужно в данном случае.
2. Спасибо. Я выполняю этот вызов в функции. После того, как я покину функцию, будет ли $.ajaxSetup({async: false}); по-прежнему действовать?
Ответ №2:
В зависимости от вашего приложения вы могли бы использовать глобальный обработчик ошибок и / или successhandler. Однако, скорее всего, только первое. Объедините с ответом от Питера, и все будет готово. Чтобы установить эти глобальные обработчики, используйте
$.ajaxError(...)
$.ajaxSuccess(...)
Смотрите http://api.jquery.com/jQuery.ajaxSetup /. На этой странице есть список способов, в котором перечислены все глобальные ajaxHandler-инициализаторы.
Ответ №3:
Проверьте, работает ли это для вас:
$.ajax({
type: "POST",
traditional: !0,
url: "/Administration/Locations/DoAction",
data: {
partitionKey: id.substring(14),
rowKey: id.substring(4, 14),
action: ac,
datastore: $("#DataSource")
.val()
},
async: !1,
dataType: "json",
timeout: 1e3,
success: function () {},
error: function () {}
})