Ответ ajax возвращается, но иногда не вызывает никаких действий или предупреждений - PullRequest
1 голос
/ 31 мая 2011

У меня довольно стандартный запрос 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);
            }
                  })

Ответы [ 2 ]

3 голосов
/ 07 июня 2011

Вы пытались визуализировать ваши данные в контроллере по-другому, например, с помощью команды render: json => @ col_data.uniq?

0 голосов
/ 06 июня 2011

Вы упомянули, что те же 10% данных вызывают эту проблему. Вы заметили какие-либо закономерности в этих записях? Есть ли у вас доступ к данным, и вы создали данные?

Много раз в своей работе я экспортировал обновленную в поле базу данных клиентов из Excel в CSV, там было множество дополнительных символов, которые выдают ошибки в JavaScript. st.paul\x92S. выглядит как основной кандидат, поскольку \ x92 - это юникод для одинарной кавычки типографа или в HTML ’

Я бы предложил попробовать очистить данные, изменив или удалив «умные цитаты». Кроме того, посмотрите, есть ли в ваших полях другие символы. Один конкретный раздражающий символ, который почти невозможно заметить в Excel, - это символ возврата каретки (или новой строки). Просмотр данных в текстовом редакторе может существенно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...