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

时间:2012-01-10 01:28:08

标签: php jquery html flash jquery-dialog

我有一个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代码一定有问题吗?

2 个答案:

答案 0 :(得分:7)

(删除了错误的答案。)


编辑:

最初,我误将jquery.js误解为您创建的文件,而不是真正的jquery。测试完代码后,我可以看到您发送的数据可能是问题所在。您是否可以发布包含$result_cameras[$i]["camera_hash"]$result_cameras[$i]["camera_name"]$camera_quality_flash$id_hash数据的示例?此外,url的结果是什么?


解决方案:

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

关于此解决方案的说明:

  1. 依赖于存在的对象,因此我将所有内容都移到ready()事件中。
  2. 假设循环中有许多按钮(由于PHP代码中的$i变量),因此数据位于按钮的属性中。
  3. 由于可能有多个按钮具有相同的功能,因此它被推广为倍数。
  4. jQuery加载命令(参见,http://api.jquery.com/load/)需要3个参数:
    • 网址
    • 一些数据
    • 负载返回时的回调函数(如果只提供2个参数,则假设第二个参数是回调函数)。回调参数是:
      • responseText ,从服务器返回的HTML
      • textStatus ,状态消息
      • XMLHttpRequest ,请求界面,可用于查看有关请求的各种信息(参见,http://www.w3.org/TR/XMLHttpRequest/
  5. 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响应,因为这很可能是您的问题所在。

由于