проблема с JSON объектом в AJAX запросе
function choose(id){
$("#data").html('');
$.ajax({
type: "POST",
url: "/ajax/"+id.substring(0, id.lastIndexOf('_')),
cache: false,
data: "q="+$("#"+id+"_title").val(),
dataType: 'json',
timeout: 10000,
error: function() {$("#data").append('');},
success: function(data){
if (data.a !== undefined) {
$.each(data.a, function(i, obj) {
$("#data").append('<div>'+obj.info+'</div>');
});
}
else if (data.b[0] !== undefined) {
$.each(data.b, function(i, obj) {
$("#data").append('<div><b>'+obj.title+'</b></br><font color="#a0a0a0">'+obj.info+'</font></div>');
});
}
$("#data").show();
$("#data div").click(function(){
var i = $("#data div").index(this);
insert(i,id,data);
});
var i = 0;
$("input:text").keypress(function(e){
id = $(this).next().attr('id');
if (e.keyCode == '13') {
if ($("#data").html() !== '') {
if ($("#data").children().get(0).tagName == "DIV")
insert(i,id,data);
else {
$("#data center").remove();
$("#data").hide();
$("#"+id+"_title").focus();
clear(id);
}
}
return false;
}
});
}
});
return false;
}
проблема в том, что после первого запроса данные data кэшируются. а хотя запрос всегда приходит новый, в функции выбора применяются старые данные. в чем может быть суть проблемы? |
я обычно даже не думая уже к урлу добавляю рандомное число, не пробовал?
|
да, какого вида url ?
Я вообще всегда к php обработчику отправляю запросы, никаких проблем не встречал. |
url, как вы видите, содержит переменную. сервер обрабатывает запрос в зависимости от этой переменной. в ней содержится имя базы, из который сервер должен достать соответствующие значения. так что random отпадает :(
от PHP я отказался согласно требованию заказчика. ps.причем эта проблема имеет место только в случае события keydown. если совершать выбор по событию click - все функционирует должным образом. возможно дело в переменных, передаваемых функциям. но только как это проверить... |
Цитата:
url: "/ajax/"+id.substring(0, id.lastIndexOf('_')),
поменяй на
url: "/ajax/"+id.substring(0, id.lastIndexOf('_'))+"?r="+Math.random(),
Цитата:
|
post-запросы не кэшируются, к ним не обязательно случайный параметр добавлять
|
решил проблему с помощью глобальной переменной, в которую запихиваю JSON данные, полученные по запросу.
|
| Часовой пояс GMT +3, время: 05:51. |