HTML-код добавляется в вывод JSON, возможно, из-за расширения Google Docs Chrome? - PullRequest
0 голосов
/ 10 января 2012

Тестируя страницу на другом компьютере, я заметил, что какой-то запрос Ajax не работал. Заглянув в консоль, я обнаружил, что в конце строки JSON был какой-то HTML-код. Похоже, что-то делать с Google Docs. Я проверил, и этот код добавляется к каждой веб-странице, кажется. Как я могу остановить добавление этого кода в вывод JSON? Очевидно, он выдает синтаксическую ошибку, поскольку jQuery пытается интерпретировать его как JSON.

Этот фрагмент кода добавляется к выводу JSON:

<div class="ugdv_contextMenu" id="ugdv_myMenu" style="display: none; ">
    <ul id="ugdv_contextMenu">
        <li id="ugdv_menuItem_google_docs">Open in Google Docs Viewer</li>
        <li id="ugdv_menuItem_new_tab">Open link in new tab</li>
        <li id="ugdv_menuItem_new_window">Open link in new window</li>
        <li id="ugdv_menuItem_new_incognito">Open link in new incognito window</li>
        <li class="ugdv_seperator"></li><li id="ugdv_menuItem_download_file">Download file</li>
        <li id="ugdv_menuItem_copy">Copy link address</li>
        <li id="ugdv_menuItem_editpdf">Edit PDF File on PDFescape.com</li>
    </ul>
</div>

Итак, кто-нибудь знает, что это такое и как мне от него избавиться?

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Проблема не имеет ничего общего с JSON.Кажется, он появляется только в Chrome, если вы включили поддержку Google doc.(Это сводило меня с ума, пока я не понял, что это контекстное меню Документов Google - хорошо, я медленно. Не появлялся, пока я не включил документы; не отображается в других браузерах. Я потратил целую вечность, внося изменения вмой код успеха ajax, пока я не понял, что это вне моего контроля. Проблема, которую я вижу, состоит в том, что, если я пытаюсь добавить img или ссылку на div, div для контекстного меню добавляется в конец моего имени файла, вызываяhtml ошибки.

Например, учитывая $('<li></li>').appendTo('#xxx').html('<img src="foo.com/bar.jpg" alt="" /> div контекстного меню начинается сразу после .jpg.

1 голос
/ 10 января 2012

Хотя я не знаю, почему этот HTML-код добавляется, решение должно быть достаточно простым: не указывайте JSON в качестве типа данных в вашем запросе ajax.На самом деле, не указывайте тип вообще.Просто сделайте следующее в вашем успешном обратном вызове:

success: function(response){
    var responseArray = response.split('<div');
    var jsonString = response[0];
    var obj = $.parseJSON(jsonString);
}
...