如何在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">×</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)))