我有一个html按钮:
<button id="monitor" onclick="startMonitor('<?php echo $result_cameras[$i]["camera_hash"]; ?>', '<?php echo $result_cameras[$i]["camera_name"]; ?>', '<?php echo $camera_quality_flash; ?>');">Monitor</button>
这会加载Flash内容:
<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>
<script type="text/javascript">
var js = jQuery.noConflict();
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></div>').load(url, function() {
js(this).dialog();
});
};
我想使用jquery对话框打开此内容。传入的所有内容似乎都是完美的(根据来自萤火虫的GET响应)但我仍然得到一个jquery错误。
missing ; before statement jquery.js line 612
我做错了什么?我甚至不确定如何调试它。提前谢谢。
修改
Firebug将GET报告为:http://myurl.com/flash/app.php?user=dee8c751cfdd2b5fb8194a3a9bac12044621df3d&camera=8f753c6bb3a8d9852a220abff0ed0d7686563007&name=test22&quality=0
。我期待这些价值观。
如果我将此网址粘贴到我的浏览器中,则Flash应用程序会按预期在浏览器中启动,但显然不会显示在jquery对话框中。我的jquery代码一定有问题吗?
答案 0 :(得分:7)
(删除了错误的答案。)
编辑:
最初,我误将jquery.js
误解为您创建的文件,而不是真正的jquery。测试完代码后,我可以看到您发送的数据可能是问题所在。您是否可以发布包含$result_cameras[$i]["camera_hash"]
,$result_cameras[$i]["camera_name"]
,$camera_quality_flash
和$id_hash
数据的示例?此外,url
的结果是什么?
解决方案:
按钮提交表单,页面正在重新加载。对话框显示,但随后页面立即重新加载,因此似乎从未有过对话框。为了防止出现这种情况,按钮的click()
函数必须返回 false (如果没有返回值,则将其视为 true 结果)。
关于此解决方案的说明:
ready()
事件中。 $i
变量),因此数据位于按钮的属性中。 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>
答案 1 :(得分:0)
您能否确认您显示的退货内容是实际内容? 如果是这样,那就不对了,因为它包含PHP标签。
如果这是从服务器端代码中复制的,请您发布从服务器获得的ACTUAL响应,因为这很可能是您的问题所在。
由于