2012-05-07 7 views
0

.html "は次のようなものです:スクリプトブロックは、Djangoのテンプレートでレンダリングされていないjavascriptの私は「current.html」</p> フォームを扱うビューは「form.html」をレンダリングする<p> </p> <p>「現在にAJAXを経由してからプルしようとしています

<script> 
    // ajax that pulls the form on a#get_form click 
    // fills up div#mod_post with the result 
</script> 

<a id="get_form" href="{% url to the view that handles the form %}">get form</a> 

<div id="mod_post" style="display:none;"> 
    {% include "form.html" %} 
</div> 

ここまでは良いです...フォームはうまく検索されて表示されます。

"form.html" とは何かのように:

<script type="text/javascript" src="/the/script/that/should/handle/the/post.js"></script> 

<form id="mod_form" action="" method="POST" enctype="multipart/form-data">{% csrf_token %} 
    <table class="form"> 
     {{ form.as_table }} 
    </table> 
    <input class="submit" type="submit" value="modifica"> 
</form> 

だけの事はform.htmlがレンダリングされるたびに、それが一部含まれていないことである:

<script type="text/javascript" src="/the/script/that/should/handle/the/post.js"> 
</script> 

は私が何かをしていますがここで間違っている、明らかにはい、私はそれを見つけることはできません。

フィードバックは歓迎です、ありがとう!

答えて

0

JavaScriptを使用してHTMLレスポンスをダンプするだけであれば、それは正常な動作です。あなたのブラウザ(つまり、それらのすべて)は、セキュリティ対策のために任意のHTML文字列レスポンスでJSによってページに追加された<script>タグを自動的に削除します。

+0

に私は、これは私のAJAX成功機能はdivの中で結果をロードしますので、何が起こっているかを推測します(adiv.html(result)); これに対応する方法はありますか?私はrantanplanが提案したものを試してみましたが、ベーステンプレートを拡張していません... – marlboro

+0

私はそれを回避する*簡単な方法を考えることができません。 * JSONはフォームオブジェクトをエンコードし、それをレスポンスのJavaScriptのURLとともに組み込み、実際にフォームとスクリプトタグをJSで手動で作成することができます。しかし、私は強く、あなたのメインのJSファイル、またはすでにロードされている任意のページ固有のJSにフォームJSを含めることをお勧めしたいと思います。 –

+0

よく私はスクリプトが火のように表示されていないことに気づいたが、ソースを読んだら、スクリプトはそこにある...しかし、私はスクリプトにcharset属性をutf-8に割り当てると、 IE7でもOKです。:) – marlboro

0

フォーム内に関連するjs/cssスクリプトをカプセル化することをお勧めします。例: あなたのbase.html

class MyForm(forms.Form): 
    field1 = ... 
    field2 = ... 
    class Media: 
     js = ('script_that_handles_the_form.js',) 

は次のようにブロックを持っている:

{% block scripts %} 
    <!--- some scripts that apply to all pages --> 
{% endblock %} 

してからform.html

{% block scripts %} 
    {{ block.super }} # retain the standard scripts that apply everywhere 
    {{ form.media }}  # add the form specific media/scripts 
{% endblock %} 

<form id="mod_form" action="" method="POST" enctype="multipart/form-data">{% csrf_token %} 
    <table class="form"> 
     {{ form.as_table }} 
    </table> 
    <input class="submit" type="submit" value="modifica"> 
</form> 
関連する問題

 関連する問題