AJAX Струны Javascript и Памида

Я создаю веб-приложение на основе пирамиды и пытаюсь реализовать редактор уценки JavaScript EpicEditor для редактирования файлов уценки.

$.ajax({
    url: "{{ request.resource_url(context) }}raw_markdown",
    context: document.body,
    success: function(md){
        markdown = md;
    }
})
var opts = { 
    basePath: '{{ request.static_url('plcars:static/') }}',
    focusOnLoad: true,
    clientSideStorage: false,
    autogrow: true,
    file: { defaultContent: markdown }
};
var editor = new EpicEditor(opts);
editor.load();

Но EpicEditor тогда действует как markdown пустой. Если я позвоню alert(markdown)тоже пусто, и если я попробую document.write(markdown); тоже ничего не происходит.

Я знаю, что URL-адрес вызова ajax работает, как я вижу в своей веб-консоли Firefox, что запрос выполняется успешно. Кроме того, если я наберу в консоли, чтобы увидеть значение переменной уценки, это так же, как и должно быть (например, "This is my text").

До этого я пытался пропустить уценку через контейнер JSON, и это, казалось, шло хорошо, за исключением того, что строка никогда не отображалась на странице.

1 ответ

Решение

Вы должны поместить свой код внутри success обратный звонок, так как ваш $.ajax вызов асинхронный:

$.ajax({
    url: "{{ request.resource_url(context) }}raw_markdown",
    context: document.body,
    success: function (md) {
        markdown = md;
        var opts = {
            basePath: '{{ request.static_url('plcars:static/') }}',
            focusOnLoad: true,
            clientSideStorage: false,
            autogrow: true,
            file: {
                defaultContent: markdown
            }
        };
        var editor = new EpicEditor(opts);
        editor.load();
    }
})
Другие вопросы по тегам