0

隠しフィールドがある単純な HTML ページがあります。ユーザーがクリックできるボタンがある DIV を表示します。ユーザーがクリックすると、メイン ページの非表示フィールドを更新したいと考えています。

現時点では、メインの HTML (CGI ファイル) にこれがあります。

print "<td><input type=\"hidden\" id=\"mailUpdate\"></td></tr>";

私はこれを持っています(divのボタンのonClickによってアクセスされるjavascriptモジュールにあります):

var updMail = document.getElementById("mailUpdate");
updMail.value = 1;

しかし、これを(上記と同じCGIファイルで)これを読んでみると:

formData = cgi.FieldStorage()
doUpd = formData.getvalue("mailUpdate")
if (doUpd == 1):
    print "Maint button - doing update"

「doUpd」は値を取得していません。

これが理にかなっていることを願っています-何かアイデアはありますか?

4

2 に答える 2

1

(doUpd == 1):文字列である doUpd を整数 1 と比較している式で、嘘を発行します。これは常に になりますFalse。に変更すると(doUpd == '1'):、問題が解決するはずです。

nameまた、フォームに出くわすように、入力にを追加する必要があります。

print "<input type=\"hidden\" id=\"mailUpdate\" name=\"mailUpdate\"></td></tr>"
于 2012-05-31T17:42:39.593 に答える
0

CGI をよく知らないと、サーバー側のコードとクライアント側のイベントを混在させているように見えます。非表示の値をより適切に確認するには、次のような行を追加します。

var updMail = document.getElementById("mailUpdate");
updMail.value = 1;
alert(document.getElementById("mailUpdate").value);

サーバー側で値を受信して​​いない場合は、入力フィールドが<form>要素内に含まれておらず、http メッセージが単純なナビゲーション呼び出しではなく、フォームの送信である必要があることが原因である可能性があります。

または、これを試して、実際にどのような値が存在するかを確認してください。

formData = cgi.FieldStorage()
doUpd = formData.getvalue("mailUpdate")
print doUpd
于 2012-05-31T17:44:57.360 に答える