-2

ライブ環境またはテスト環境のいずれかで実行されるプログラムがあります。唯一の違いは、テスト環境のURLに「/test/」が含まれていることです。テスト環境では、一部の関数によってライブ環境に切り替えられるため(URLがハードコーディングされている場合)、それを修正しようとしています。

私はJavaScriptでこの関数を作成しました:

function GetTestMode()
{
    // If "/test/" exists in URL, keep it there (we are in test mode).
    var currentURL = document.URL;
    var sTestMode = "";
    if (currentURL.indexOf("/test/") != -1)
    {
    // test mode (according to URL)
      sTestMode = "test/";
    }
    return sTestMode;
}

これはJavaScript関数によって使用され、期待どおりに機能します。

ただし、ほとんどのUIコードはPython(HTMLの作成)です。したがって、このJavaScriptの結果をPythonで取得したいと思います。これまでのところ:

import cgi
import os
import sys
import re

def DrawUI (self, short=False):
    print '<br />'
    print '<div class="box2">'
    print '<table cellspacing=0 cellpadding=0 border="0">'
    print '<tr>'

    sTestMode = "test mode = %s" % ('<a href="javascript:GetTestMode()" >')
    print 'sTestMode = ' + sTestMode + '<br />'

これにより、このコードに続くprintステートメント(これも可能ですprint 'hello world')がリンクになり、クリックすると、ブラウザーのJavaScript関数からの正しい戻り値が表示されます。

sTestMode(ユーザーの操作なしで)戻り値を含めるにはどうすればよいですか?

4

1 に答える 1

1

mod_pythonを使用していると思います。

これは、Javascript変数をサーバーに取得する方法のハックアップされた例です。

Pythonでは、cgiモジュールを使用します。

form = cgi.FieldStorage()
sTestMode = form.getfirst('sTestMode')
sTestMode = cgi.escape(sTestMode)  # Avoid script injection escaping the user input

JavaScriptで、JQueryを使用する(これが正しいかどうかはわかりませんが、JQueryの第一人者が間違っている場合は修正できる可能性があります)。

var filename = '/url/to/your/script';
$.ajax({
  url: filename + '?sTestMode=' + sTestMode,
  type: 'GET'
});

Javascriptバージョンの実装に問題がある場合は/url/to/your/script?sTestMode=something_funny、ブラウザで呼び出すことにより、Pythonスクリプトが正しいことを確認できます。

ただし、 CGIAjaxの概念、およびmod_pythonの動作を理解する必要があります。

于 2012-08-16T09:16:17.600 に答える