У меня проблема с изменением содержимого div. Сначала я делаю вызов ajax и получаю массив JSON с сервера. Все идет нормально. Затем я хочу изменить содержимое div на то, что я получил от сервера. Проблема заключается в том, что содержимое не изменяется при первом щелчке. Ответ всегда в порядке, я проверил с Fiddler и в своем коде, что получаю правильный ответ. Но, остается загадка, почему div на моей странице не изменился с первого щелчка. Почему мне приходится дважды кликать каждый раз? Я трачу часы на это, все пробовал, ничего не кажется логичным. Вот мой код (проект MVC 4):Содержимое Div не изменяется при первом нажатии
$('#btnsearch').click(function()
{
var searchStr = $('#txtSearch').val();
var noOfPages = 1;
$.ajax({
type: "POST",
datatype: 'json',
url: $('#btnsearch').data('request-url'),/*URL from Razor's page*/
data: { pageNo: noOfPages, searchString: searchStr },/*MVC 4 call*/
success: function (jsontext)
{
$('#hiddenSearchResult').val(jsontext);
},
error: function()
{
alert('Error when searching!');
}
});
var json = $('#hiddenSearchResult').val();
if (json.length === 0){ alert('result is empty!');
return;}/*with empty json, parsing throws error*/
json = JSON.parse(json);
if (json.Content == undefined) return;
for (var i = 0; i < json.Content.length; i++) {
switch (i) {
case 0:
$('#snippetsdivinner').html(json.Content[i].ContentString);
break;
case 1:
$('#snippetsdivinner1').html(json.Content[i].ContentString);
break;
case 2:
$('#snippetsdivinner2').html(json.Content[i].ContentString);
break;
case 3:
$('#snippetsdivinner3').html(json.Content[i].ContentString);
break;
}
}
});
Не из-за асинхронного вызова? Щелчок не дожидается, что вы получите данные, и просто продолжайте выполнение. –
Я положил свой код в успех свойства ajax и работает как шарм. Единственная причина, по которой вы не работали, не ожидала, что асинхронный вызов будет финским, как вы уже упоминали. – FrenkyB
Рад, что вы это сделали :) –