Поскольку кажется, что вы используете только коллбэк сообщения «success», вы можете использовать метод .post
, который немного проще для глаз. Также вы можете поместить эти вызовы блока в ajaxStart
и ajaxStop
. Для меня это аккуратнее.
Мне показалось $(this).parent().parent().block
неправильным, я изменил его, чтобы ссылаться на тот же элемент, который используется для разблокировки. Я также проверил бы вывод PHP-скрипта, чтобы убедиться, что все, что вы «обновляете», на самом деле обновляется (просто выведите XML из PHP, и вы увидите это в журнале консоли).
$(function() {
// Apply click handlers to anchors
$("input.update").click(function(e){
// Stop normal link click
e.preventDefault();
var str = $(this).parent().serialize();
// Send request
var action = "forms/update.php";
$.post(action, {data:str}, function(xml) {
console.log(xml);
$("div.edit_box").append("<span class=\"success\">This has been updated!</span>");
})
});
// Adds a wait indicator to any Ajax requests
$(document.body).ajaxStart(function() {
$("div.edit_box").block({ message: "<span class=\"loading\"><img src=\"<?php echo $siteUrl ?>/admin/template/images/loading.gif\" alt=\"loading...\" /><p>Updating...</p></span>" });
}).ajaxStop(function() {
$("div.edit_box").unblock();
$("div.edit_box").append("<span class=\"success\">This has been updated!</span>");
});
});