在JQuery中打开.dialog的问题

时间:2013-01-17 11:29:46

标签: php javascript jquery jquery-ui

嘿伙计,所以我有一个界面,一旦用户登录他们的信息被检查,如果用户没有读取TOS,则对话框将打开。我的问题是,它永远不会打开。

代码:

function run(){
    var url = '/pcg/termsofservice/termsofservice.php';
    showUrlInDialog(url);
}
    function showUrlInDialog(url){
      var tag = $("#dialog-container");
      $.ajax({
        url: url,
        success: function(data) {
          tag.html(data).dialog
          ({
              width: '100%',
                modal: true
          }).dialog('open');
        }
      });
    }
    // if user accepts
    function agree(){
        alert("Handler for .click() called.");
    }
    /******is user declines ******/
    function decline(){

     $("#dialog-container").dialog( 'close' );
     /*****run ajax to kill session of current user and return to login page ******/
      $.ajax({ url: '/PCG/termsofservice/declinedkill.php',
             data: {},
             type: 'post',
             success: function(output) {
                 window.location.replace("/PCG/mainlogin.php");
                      }
    });
    }

PHP检查他们是否还没有读过TOS:

//GET TOS setting if any in place, if so display TOS
$TOS = $_GET['TOS'];

if ($TOS == 0){
        echo '<script type="text/javascript">'
   , 'run();'
   , '</script>';
}

在上面的javascript代码中 - "#dialog-container"仅在$ TOS变量为0时定义:

<!-- See if TOS is active, if so add these divs for the overlay -->
    <?php
        echo '<div id="dialog-container">
        </div>';
    ?>

所有这些都有效,除了没有任何显示。

如果您有任何错误,请告诉我,谢谢:)

4 个答案:

答案 0 :(得分:1)

而不是这个:

var tag = $("#dialog-container");

使用它:

var tag = $(document).find("#dialog-container");

并改变它:

tag.html(data).dialog({
          width: '100%',
            modal: true,
            autoOpen:true
      });

结帐文档:http://api.jqueryui.com/dialog/#option-autoOpen

并拨打run();

中的doc ready handler

答案 1 :(得分:1)

看起来你在jQuery准备好之前调用了jQuery方法。你应该在jQuery的document.ready函数中调用run()。

<script type="text/javascript">
    $(document).ready(function() {
       run();
    });
</script>

答案 2 :(得分:0)

function showUrlInDialog(url){
      var tag = $("#dialog-container").dialog({width: '100%',modal: true,autoOpen:false });
      $.ajax({
        url: url,
        success: function(data) {
          tag.html(data)
          tag.dialog('open');
        }
      });
    }

试试这个...... !!

答案 3 :(得分:0)

你的div&#34;#dialog-container&#34;不存在,如果你把这个div放在你的html代码中进行简单的测试就可以了。