0

嘿伙计们,所以我有一个界面,一旦用户登录他们的信息就会被检查,如果用户没有阅读 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

4 回答 4

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

于 2013-01-17T11:36:31.090 回答
1

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

<script type="text/javascript">
    $(document).ready(function() {
       run();
    });
</script>
于 2013-01-17T11:41:24.003 回答
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');
        }
      });
    }

试试这个...!!

于 2013-01-17T11:37:13.713 回答
0

您的 div "#dialog-container" 不存在,如果您将该 div 放入您的 html 代码中进行简单测试,则可以正常工作。

于 2013-01-17T11:42:53.347 回答