0

モーダルウィンドウを起動するクリック機能があります。モーダル ウィンドウ内に modal_window.php をロードします。クリック機能は次のようになります。

$('a#testmodal').click(function(e){
<? $id = $_GET['id']; ?>
varid = <? echo $id; ?>;
        $.get('modal_window.php?id=' + varid, function(data){
modal.open({content: data});});
                e.preventDefault();
            });

そして、それをトリガーするために使用しているリンクは次のようになります。

<a id="testmodal" href="modal_2.php?id=5">Test</a>

奇妙なことに、最初にリンクをクリックしても何も起こりません。ただし、2回目にクリックすると、すべてが正常に機能します。この理由は、コードの jquery 部分が、php 変数 $id が設定される前に初めて実行されるためです (jquery セクションが実行され、次に php セクションが実行されます)。次に、リンクを 2 回クリックすると (クリック関数内の php 変数 $id がこの時点で設定されます)、すべてが完全に機能します。

だから私の質問は、私のリンクからPHPに依存しない私のクリック関数に変数を渡す別の方法があるということです. このようなもの:

<a id="testmodal" href="" var id ="5">Test</a>
4

2 に答える 2

1

$_GETデータがないため、関数に構文エラーが発生し、リンクが「正常に」動作するため、コードは最初は機能しません。2 回目のクリックでidパラメータが表示されるので、モーダルが開きます。

さて、実装の背後にあるロジックはよくわかりませんが、単にクリック ハンドラーに値を渡したい場合は、データ属性を使用できます。

HTML

<a id="testmodal" href="#" data-id ="5">Test</a>

Javascript

$('#testmodal').click(function(e){
    e.preventDefault();
    $.get('modal_window.php?id=' + $(this).data('id'), function(data){
        modal.open({content: data});}); 
});

それは機能しますが、さまざまなモーダル ウィンドウへの複数のリンクがあると想定しているため、リンクにクラスを指定し、それをクリック ハンドラーのセレクターとして使用することをお勧めします。

$('.open-modal').click(function(e){
    ...
});
于 2013-07-03T06:38:11.923 に答える
0

クライアントがデータを送信する前に PHP が実行されます (PHP はサーバーによって実行されます)。ソースを調べても何も表示されない

そうは言っても、次の質問を参照してください: JavaScript でクエリ文字列の値を取得するにはどうすればよいですか? .

于 2013-07-03T03:55:24.050 に答える