У меня есть этот код, который работает, но только если кнопка нажата в первый раз:
<script>
$(document).on("click","#btn-regenerate", function () {
var something = "blablabla";
$.ajax({
type: "POST",
url: base_url_admin + "sitemap/getcategories",
data: {"something" : something},
dataType: "json",
success: function(msg){
$("#categories").html(msg);
},
error: function(jqXHR, textStatus, errorThrown){
alert(textStatus + " " + errorThrown);
}
});
});
</script>
Но после первого раза он не работает. Зачем? Я хочу, чтобы щелкнуть, чтобы удалить предыдущий контент в текстовом поле, и снова поставить вывод ajax (независимо от того, сколько раз я нажимаю кнопку). Но он работает только в первый раз. Затем, когда я, например, вручную удаляю часть содержимого в текстовом поле и нажимаю кнопку, ничего не происходит. Как это исправить? Что я делаю не так?
Вместо
$("#categories").html(msg);
попробуйте:
$("#categories").val(msg);
.html()
устанавливает непосредственно HTML-код в данном элементе, поэтому он работает для пустой textarea
. После этого textarea
наследует его как значение и охватывает HTML-код. Кроме того, если вы установите значение в нем вручную, он не изменит свой HTML-код (все еще только значение).
Я думаю, что #btn-regenerate
вставлен после вызова ajax, поэтому вы должны связать событие click после него после вызова ajax
сначала удалите html-содержимое в $ ("# categories") как
$("#categories").html('');
перед вызовом ajax, а затем добавьте содержимое html в ответ
$("#categories").html(msg);