2012-01-07 7 views
0

私は、フラッシュアプ​​リケーションを起動する新しいブラウザウィンドウを開くためにhtml/phpとjavascriptの組み合わせを使用します。これは正常に動作しますが、最近のほとんどのユーザーはウィンドウのポップアップを期待せず、ポップアップを許可することを忘れることがよくあります。だから私は良い解決策は、Jqueryのダイアログ:http://jqueryui.com/demos/dialog/#defaultを使用していると思った。jqueryダイアログ変換

このFlashアプリケーションには多くのことが渡される必要があるため、jqueryダイアログでこれを実装する方法について、ここでいくつかのガイダンスを探しています。したがって、これを行う方法についてのラウンド。私は最初のものの束とHTMLでボタンを作成

は、DBから引き出さ:

<button id="monitor" onClick='startmonitor("<?php echo htmlentities($_SERVER['REQUEST_URI']); ?>","<?php echo $result_cameras[$i]["camera_hash"]; ?>","<?php echo $result_cameras[$i]["camera_name"]; ?>","<?php echo $camera_quality_flash; ?>")'>Monitor</button> 

それから私は、ボタンから渡されたパラメータを使用して、JavaScriptでフォームを作成します。

function startmonitor(to, camerahash, cameraname, cameraflashquality) 
{ 
    var myForm = document.createElement("form"); 
    myForm.method = "post"; 
    myForm.action = to; 

    var myInput = document.createElement("input"); 
    myInput.name="video"; 
    myInput.value="Monitor"; 
    myForm.appendChild(myInput); 

    myInput = document.createElement("input"); 
    myInput.name="camera_hash"; 
    myInput.value=camerahash; 
    myForm.appendChild(myInput); 

    myInput = document.createElement("input"); 
    myInput.name="camera_name"; 
    myInput.value=cameraname; 
    myForm.appendChild(myInput); 

    myInput = document.createElement("input"); 
    myInput.name="camera_quality_flash"; 
    myInput.value=cameraflashquality; 
    myForm.appendChild(myInput); 

    document.body.appendChild(myForm); 
    myForm.submit(); 
    document.body.removeChild(myForm); 
} 

そして最後に、さらにPHPでこれを処理し、フラッシュアプ​​リを起動するためにJavaScriptを呼び出します。

if (isset($_POST['video'])) { 
    //get user hash for monitor app 
    $query_user_hash = "SELECT id_hash FROM #__users WHERE user_id=".$user->id; 
    $db->setQuery($query_user_hash); 
    $id_hash = $db->loadResult(); 

    $camera_hash = check_input($_POST['camera_hash']); 
    $camera_name = check_input($_POST['camera_name']); 
    $camera_quality_flash = check_input($_POST['camera_quality_flash']); 

    echo '<script type="text/javascript"> 
     window.open("flashapp/app.php?user='.$id_hash.'&camera='.$camera_hash.'&name='.$camera_name.'&quality='.$camera_quality_flash.'", "Flash_monitor", "location=0,menubar=0,status=0,scrollbars=0,width=360,height=405") 
    </script>'; 
} 

ありませんここからどこから始めるべきか確かめてください。 window.openのところでjqueryダイアログを使用しようとしていますか?どのように私は同じパラメータをどのように渡すかわからないのですか?または、これに取り組むための良い方法があります。

答えて

1

フォームを動的に作成してサーバーにポストバックする必要はないようです。あなたが実際にやっていることはすべて、ユーザーのid_hashを調べているようです。メインページで利用可能な場合は、余分なサーバーサイドコールは必要ありません。そして、あなたはこのような何かを行うことができます:

<button id="monitor" onclick="startMonitor('<?php echo $result_cameras[$i]["camera_hash"]; ?>', '<?php echo $result_cameras[$i]["camera_name"]; ?>');">Monitor</button> 

var startMonitor = function(cameraHash, cameraName) { 
    var url = ['flashapp/app.php?user=<?php echo $user_id_hash; ?>', 'camera=' + cameraHash, 'name=' + cameraName, 'quality=<?php echo $camera_quality_flash; ?>'].join('&'); 
    $('<div></div>').load(url, function() { 
     $(this).dialog(); 
    }); 
}; 
+0

あなたの権利は、私が唯一のユーザーid_hashを必要とし、それは入手しやすいです。なぜ私がこのルートを降りたのかわからない。これは非常にエレガントなようです。ただし、クォーテーション(「モニター」ボタンで確認できます)のために失敗します。引用するこの方法について確かですか?私は前にこのように見たことがない。私はこれで遊ぶつもりです。 – Tom

+0

上に編集したコードを試してください –

+0

上記のコードはうまくいくはずです。 @NateBolam:2番目の '

' in the jQuery selector should be '
'(スラッシュがありません)を提案し、各php-echoの最後に ';'を追加します。 @TomPepernic: 'flashapp/app.php'リクエストの結果を表示できますか? – scessor