0

私はdjango Webアプリを実行しています。最初にフォームを送信すると失敗します。データを送信するには、フォームを更新して再度送信するか、Webブラウザーで前に進む必要があります。テキストエリアの自動配色コードに JavaScript プログラム (editarea) を使用しています

ここに私のHTMLファイルがあります:

<html>
<head>
    <title>Test</title>
    <script language="javascript" type="text/javascript" src="/static/edit_area/edit_area_full.js"></script>
    <script type="text/javascript">
        function load() {
            var combo = document.getElementById('selSeaShells1').value;
            editAreaLoader.init({
                id: "textarea_1"        // textarea id
                    , syntax: combo                // syntax to be uses for highgliting
                    , start_highlight: true     // to display with highlight mode on start-up
            });
        }
    </script>
</head>
<body onload="load();">
    <form id="codeid" method="post" enctype="application/x-www-form-urlencoded" name="code" action="DestinationAddress/function">
    <h3>Choose a language</h3>
    <select name="sellang1" id="selSeaShells1" onchange="load();">
        <option value="python">Python</option>
        <option value="perl">Perl</option>
        <option value="sql">SQL</option>
        <option value="cpp">C++</option>
        <option value="c">C</option>
        <option value="java">Java</option>
        <option value="css">Css</option>
    </select>
    <br>
    <textarea id="textarea_1" name="content" cols="80" rows="15" type="text"></textarea>
    <input id="thebutton" type="button" value="Submit" onclick="document.forms.codeid.submit();" />
    </form>
</body>
</html>

そしてここにviews.py:

def function(request):

encoded_data = urllib.urlencode(request.POST)

url=urllib2.urlopen('http://webappAddress:8000/function/?' + encoded_data)

tml= url.read()

return HttpResponse(tml)
4

1 に答える 1

1

あなたのJavaScriptが失敗しています。
var コンボ = document.getElementById('selSeaShells1').value;
ページの読み込みが完了する前に load() を呼び出すため、コンボは未定義になります。
私はjqueryを使用してこれを行います:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> //download and get a local copy of jquery don't use googles.***<script>

$(document).ready(function() {
    load();
});

function load()
    {     
        var combo = $('#selSeaShells1 option:selected).val();

            editAreaLoader.init({
            id : "textarea_1"       // textarea id
            ,syntax: combo                // syntax to be uses for highgliting
            ,start_highlight: true      // to display with highlight mode on start-up
            });


    }

</script>

onload="load();" を削除 on body タグ
これにより、ページが読み込まれた後に選択が取得されます。

于 2013-02-13T21:29:13.103 に答える