JQuery диалог преобразования - PullRequest
0 голосов
/ 07 января 2012

Я использую комбинацию html / php и javascript, чтобы открыть новое окно браузера, в котором запускается флэш-приложение.Это работает нормально, но большинство пользователей в наши дни не ожидают всплывающих окон и часто забывают разрешить всплывающие окна.Поэтому я подумал, что хорошим решением может быть использование диалогового окна Jquery: http://jqueryui.com/demos/dialog/#default.

Я ищу здесь несколько советов о том, как реализовать это с помощью диалогового окна jquery, так как этому приложению flash нужно много чего передать.Отсюда и пошаговый способ сделать это.

Сначала я создаю кнопку в html с кучей вещей, извлеченных из БД:

<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 для запуска приложения flash:

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>';
}

Даже не знаете, с чего начать.Я пытаюсь использовать диалог jquery, где я делаю window.open?В каком случае я не уверен, как передать те же параметры?Или есть лучший способ справиться с этим.

1 Ответ

1 голос
/ 08 января 2012

Кажется, что динамическое создание формы и отправка обратно на сервер могут быть ненужными.Кажется, что вы действительно делаете это поиск 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();
    });
};
...