加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP到jquery对话框()交互问题.

发布时间:2020-12-13 17:40:16 所属栏目:PHP教程 来源:网络整理
导读:我有一个 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内容: scr
我有一个 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错误.

失踪 ;在语句jquery.js第612行之前

我究竟做错了什么?我甚至不确定如何调试这个.提前致谢.

编辑:
Firebug将GET报告为:http://myurl.com/flash/app.php?user = dec8c751cfdd2b5fb8194a3a9bac12044621df3d& camera = 8f753c6bb3a8d9852a220abff0ed0d7686563007& name = test22& quality = 0.我期待这些价值观.

如果我将此网址粘贴到我的浏览器中,则Flash应用程序会按预期在浏览器中启动,但显然不会显示在jquery对话框中.我的jquery代码一定有问题吗?

解决方法

(删除了错误的答案.)

编辑:

最初,我将jquery.js误解为您创建的文件,而不是真正的jquery.测试完代码后,我可以看到您发送的数据可能是问题所在.你能用$result_cameras [$i] [“camera_hash”],$result_cameras [$i] [“camera_name”],$camera_quality_flash和$id_hash的数据发布样本吗?另外,url的值是什么?

解:

按钮提交表单,页面正在重新加载.对话框显示,但随后页面立即重新加载,因此似乎从未有过对话框.为了防止这种行为,按钮的click()函数必须返回false(如果没有返回值,则将其视为真实结果).

关于此解决方案的说明

>依赖于存在的对象,所以我将所有内容都移到了ready()事件中.
>假设循环中有许多按钮中的一个(因为PHP代码中的$i变量),因此数据位于按钮的属性中.
>由于可能有多个按钮具有相同的功能,因此它被推广为多个.
> jQuery加载命令(参见,http://api.jquery.com/load/)需要3个参数:

>网址
>一些数据
>当负载返回时的回调函数(如果只提供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,cameraFlashQuality) {

            var url = [
                    'flash/app.php?user=<?php echo $id_hash; ?>','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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读