(неправильный ответ удален.)
Редактировать:
Изначально я неверно истолковал jquery.js
как файл, который вы создали, а не как реальныйJQuery.После тестирования кода я вижу, что проблема в отправляемых вами данных.Можете ли вы опубликовать образец с данными для $result_cameras[$i]["camera_hash"]
, $result_cameras[$i]["camera_name"]
, $camera_quality_flash
и $id_hash
?Кроме того, каково значение для url
, которое получается?
Решение:
Кнопка отправляет форму, и страница перезагружается.Откроется диалоговое окно, но затем страница сразу же перезагружается, поэтому кажется, что диалога никогда не было.Чтобы предотвратить такое поведение, функция кнопки click()
должна возвращать false (если значение не возвращается, оно обрабатывается как результат true ).
Примечания к этому решению:
- Полагается на существующие объекты, поэтому я переместил все в событие
ready()
. - Предполагается, что это одна из множества кнопок внутри цикла (из-за переменной
$i
в коде PHP), поэтому данные находятся в атрибутах кнопки. - Поскольку может быть несколько кнопок с одинаковой функциональностью, она обобщается для кратных.
- Команда загрузки jQuery (ср., http://api.jquery.com/load/) принимает 3 параметра:
- URL
- некоторые данные
- функция обратного вызовакогда возвращается нагрузка (если вы предоставляете только 2 параметра, предполагается, что второй является функцией обратного вызова).Параметры обратного вызова:
- responseText , HTML-код, возвращаемый с сервера
- textStatus , сообщение о состоянии
- XMLHttpRequest , интерфейс запроса, который можно использовать для просмотра различной информации о запросе (ср., http://www.w3.org/TR/XMLHttpRequest/)
HTML тестовый файл:
<html>
<head>
<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script>
</head>
<body>
<form>
<?php
$i = 0;
$result_cameras = array(array("camera_hash" => "test1", "camera_name" => "test2"));
$camera_quality_flash = 1;
$id_hash = "hashish";
echo '<button id="monitor1" class="monitor" camHash="' . $result_cameras[$i]["camera_hash"] . '" camName="' . $result_cameras[$i]["camera_name"] . '" camQual="' . $camera_quality_flash . '" >Monitor 1</button>';
echo '<button id="monitor2" class="monitor" camHash="' . $result_cameras[$i]["camera_hash"] . '-2" camName="' . $result_cameras[$i]["camera_name"] . '-2" camQual="' . $camera_quality_flash . '-2" >Monitor 2</button>';
?>
<div class="tester">TEST DIV</div>
</form>
</body>
<script type="text/javascript">
var js = jQuery.noConflict();
js(document).ready(function(){
var monitor = js(".monitor");
//alert(monitor[1]);
monitor.each(
function(i){
js(this).click(
function(){
//alert(js(this).attr('camHash'));
startMonitor(
js(this).attr('camHash'),
js(this).attr('camName'),
js(this).attr('camQual')
);
return false;
}
);
}
);
var startMonitor = function(cameraHash, cameraName, cameraFlashQuality) {
var url = [
'flash/app.php?user=<?php echo $id_hash; ?>',
'camera=' + cameraHash,
'name=' + encodeURIComponent(cameraName),
'quality=' + cameraFlashQuality
].join('&');
js('<div>TEST DIV 2</div>').load(url
, function(response, status, xhr) {
js('.tester').text( "<div>xhr: <br />"
+ xhr.status + "<br />"
+ xhr.statusText + "<br />"
+ xhr.getAllResponseHeaders() + "<br />"
+ xhr.responseText + "<br />"
+ xhr.responseXML + "<br />"
+ "</div>"
);
// js(this).dialog();
}
);
};
});
</script>
</html>