1

Web ページから複数の Domotics 機器を制御できるホーム サーバーでインターンシップを開始しています。全体的な考え方は、ボタンのクリックに基づいて、特定のスクリプトがサーバー上で生成され、マイクロコントローラーを制御するというものです。

私の家庭教師は、AJAX を使用して常に 1 ページにとどまり、ユーザーの操作に応じてメニューを表示する、彼がくれたシンプルな Web サイトを構築しました (使用しない場合は非表示になり、使用する場合は前面に戻します)。

CGI スクリプトを実行するように構成した Apache サーバーをセットアップしましたが、動作します。常に 1 つのページにとどまるために、「204 No Content」リターン トリックを使用して、そのページに対するサーバーの応答が「言うことは何もありません。このページに留まるだけです」となるようにしました。

しかし、私が抱えている 1 つの問題は、CGI が 1 回しか起動されないことです。初めてボタンをクリックすると、機能しますが、その後は何も起こりません。

GET メソッドで FORM を使用する代わりに、SSI (shtml) を使用してボタンコードで使用しようとしましたが、スクリプトはまだ 2 回実行されません。

間違ったツールを使用している可能性があります。CGI を使い続ける必要がありますか? それとも、実際に私がやりたいことをするように設計された何か(AJAX、jqueryなど)がありますか?

読んでくれてありがとう。

編集:私はそれを回避する方法を見つけました(フォーラムに行き、次の1時間で自分自身に良い解決策を見つけるのは、答えを何日も探した後に必死になっているときです....)私は基本的なリンクを使用しました、そして何らかの理由で、ボタンを使用する場合とは異なる動作をします。なんでもいい。使用されているテクノロジーに関する私の尋問はまだ残っています:)

EDIT2:私の解決策はくだらないです。何らかの理由で、スクリプトはページの更新時(またはページが初めて読み込まれたとき)にも呼び出されます。奇妙なことに、それはクリックしたときにのみ生成されるはずなので...

4

1 に答える 1

0

jQuery とそのAJAX APIに慣れてください。AJAX を使用しない限り、新しいページを読み込まないようにすることはできません。以下は、AJAX 呼び出しの例です。

$.ajax({
    url: 'http://server.domain.com/cgi-bin/myfile.cgi',
    data: {
       x: 1,
       today: '20110504',
       user: 'Joe'
    }
}).success(function(data, status, xhr) {
    if (data)
        alert(data);
});

これは jQuery 1.5 以降用です。次のように、特定のボタンがクリックされるたびに実行できます。

ボタンの HTML:

<input type="button" id="doThis"/>

JavaScript:

$(function() {
    $('#doThis').click(function() {
        //put AJAX sample shown above, here
    });
});
于 2011-05-04T12:36:28.690 に答える