0

我正在构建一个金字塔网络应用程序,并且我正在尝试实现 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);也没有任何反应。

我知道 ajax 调用的 URL 有效,正如我在 Firefox Web 控制台中看到的请求成功。此外,如果我在控制台中键入以查看变量 markdown 的值,它应该是正确的(例如,"This is my text")。

在此之前,我曾尝试通过 JSON 容器传递 markdown,这似乎很顺利,只是该字符串永远无法显示在页面上。

4

1 回答 1

3

您应该将代码放在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();
    }
})
于 2013-10-31T18:46:55.033 回答