У меня довольно стандартный запрос ajax, и ответ возвращается в виде массива.
Он отлично работает в 90% случаев.
К сожалению, в 10% случаев запрос отправляется, ответ возвращается, но не отображается, и я даже не могу вывести предупреждение.
Firebug не показывает ошибок с ответом. Я могу открыть ответ в другом окне, и это нормально. Я прошел через ответ и не вижу очевидных ошибок кодирования. Хотя такие вещи, как Сент-Полс выходят как
st.paul\x92S.
Возвращаемые данные извлекаются из файла CSV, который был переведен в CSV из файла Excel.
всегда происходит сбой при одинаковых запросах. Таким образом, 90% запросов проходят нормально, 10% сбоят без ошибок, но это всегда те же самые 10%.
Я использую рельсы, и вывод генерируется
render ({:content_type => :js, :text => @col_data.uniq})
Я получаю CSV, как это, и удаляю начальные и конечные пробелы. Может быть, я должен искать, чтобы раздеть или кодировать другие символы?
def csv_data
csv=Dataset.find(session[:dataset_id])
@csv_data = CSV.read(csv.dataset.path)
@csv_data = @csv_data.each{|row| row.each {|col|col.to_s.strip!}}
return @csv_data
end
Я бы включил вывод здесь, но это длинный массив, и я просмотрел его, ища ноль или кодировки символов, но существующие кодировки определенно экранированы.
Этот вопрос был первоначально опубликован как ошибка размера ответа ajax, потому что это очевидное различие, которое я видел между тем, что работало, и тем, что не работало, но первые комментарии приводят меня к мысли, что размер не является проблемой, поскольку большие ответы меньше 45kb.
Код jquery ajax довольно прост. Я пробовал как с dataType: 'json', так и без установки dataType.
«Предупреждение» срабатывает при возврате данных, однако в тех ситуациях, когда данные не возвращаются, предупреждение не срабатывает. Тем не менее, я вижу вывод в firebug, так что это ответ без ошибок.
var selected_field=jQuery('option:selected',this).text();
jQuery.ajax({
url: 'selectfilter',
data: 'column_name='+selected_field,
dataType: 'json',
success: function(data){
alert(data.toSource());
if(data.length==0){
alert('the selected column has no data');
}
var list='';
for (var i=0;i'+data[i]+'';
}
jQuery('table#sample_data').html(list).data('list',data);
}
})