Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ajax加载的表单上激活django form.media javascript?_Javascript_Ajax_Django_Forms_Dajaxice - Fatal编程技术网

如何在ajax加载的表单上激活django form.media javascript?

如何在ajax加载的表单上激活django form.media javascript?,javascript,ajax,django,forms,dajaxice,Javascript,Ajax,Django,Forms,Dajaxice,我这里有一个小问题: 由于它的小部件,我得到了一个包含一些媒体的表单。 当表单是页面的一部分时,一切都按预期工作,但是如果我想使用ajax调用加载该表单,例如,在模式中,即使表单中包含js脚本,它也不会运行。另一方面,css工作得非常好 我想这与javascript无法检测到包含的新脚本标记有关 我需要做什么来运行这个js? 代码示例: 模态表格模板: {{form.media}} {% crispy form %} <a class="close-reveal-modal">&am

我这里有一个小问题:
由于它的小部件,我得到了一个包含一些媒体的表单。
当表单是页面的一部分时,一切都按预期工作,但是如果我想使用ajax调用加载该表单,例如,在模式中,即使表单中包含js脚本,它也不会运行。另一方面,css工作得非常好

我想这与javascript无法检测到包含的新脚本标记有关

我需要做什么来运行这个js? 代码示例:

模态表格模板:

{{form.media}}
{% crispy form %}
<a class="close-reveal-modal">&#215;</a>
{{form.media}
{%crispy form%}

经过一些研究,我终于找到了启用加载的javascript文件的正确方法。
请注意,jquery是必需的
这是一个简单的
$.ajax({{dataType:“script”,cache:true,url:“url/file.js”}})

正如我所说的form.media,您可以检索表单执行以下操作所需的所有脚本:

files_url = []
for js in form.media._js: # for all the scripts used by the form
    files_url.append(form.media.absolute_path(js)) # we retrieve their url
当我使用dajax启用脚本时,我可以简单地调用
dajax.script
来启用脚本:

loaders = []
for js in level_form.media._js:
    loaders.append('$.ajax({{dataType: "script", cache: true, url: "{0}"}})'.format(level_form.media.absolute_path(js)))

dajax.script("""
    $.when(
        {0}
    ).done(function() {{
        console.log("scripts are loaded !");
        // do something here when files are loaded
    }}).fail(function () {{ 
        alert("An error occured, try reloading the page.");
        // do something here if loading failed
    }});""".format(",\n".join(loaders)))
当心您需要添加
DAJAXICE\u XMLHTTPREQUEST\u JS\u IMPORT=False

在your settings.py中,请参阅。

我认为您可以在ajax调用返回完成状态后运行js。也许发布你的ajax代码?
loaders = []
for js in level_form.media._js:
    loaders.append('$.ajax({{dataType: "script", cache: true, url: "{0}"}})'.format(level_form.media.absolute_path(js)))

dajax.script("""
    $.when(
        {0}
    ).done(function() {{
        console.log("scripts are loaded !");
        // do something here when files are loaded
    }}).fail(function () {{ 
        alert("An error occured, try reloading the page.");
        // do something here if loading failed
    }});""".format(",\n".join(loaders)))