代码之家  ›  专栏  ›  技术社区  ›  ScottG

希望使用jquery弹出窗口,但从服务器端获取数据

  •  0
  • ScottG  · 技术社区  · 15 年前

    当有人像这样点击我的谷歌广告词链接时:

    http://www.myshoppingsite.com/product/rubberball.aspx?promo=promo123

    我想让我的ASPX页面读取“promo”参数,点击数据库拉回一些数据,然后在产品页面顶部向用户显示一个漂亮的jquery类型弹出窗口。用户可以阅读所有关于促销的信息,然后关闭弹出窗口,进入他们想要访问的产品页面。

    我不知道该如何做……我是从客户端读取参数并获取数据(通过WebService或Page方法),还是从服务器端获取数据并调用javascript?

    我以前创建过jquery弹出窗口,但是数据一直在客户端。我想显示一个弹出窗口,但从数据库中获取数据。

    有什么想法吗?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Paolo Bergantino    15 年前

    如果您真的考虑过它,那么在这种情况下没有理由返回服务器。您可以简单地检查服务器端,如果 promo 传递了get参数,如果是,则显示一个隐藏的 <div> 有促销信息:

    <div style='display: none;' id='promo'>
    ....
    </div>
    

    一旦您这样做了,您就可以简单地使用一些jquery代码来检查这个代码是否隐藏了 <DIV & GT; 存在,如果存在,则显示模式:

    $(function() {
        if($('#promo').length > 0) {
            showModal($('#promo').html());
        }
    });
    

    如果您坚持通过Ajax查询服务器,那么这也相当简单:

    function gup( name ) {
      name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
      var regexS = "[\\?&]"+name+"=([^&#]*)";
      var regex = new RegExp( regexS );
      var results = regex.exec( window.location.href );
      if( results == null )
        return "";
      else
        return results[1];
    }
    
    $(function() {
        var promo = $.trim(gup('promo'));
        if(promo != '') {
            $.get('my/url/whatever.php', {promo: promo}, function(data) {
                showModal(data);
            });
        }
    });
    

    既然你说过你有使用jquery显示模式窗口的经验,我就不会详细介绍 showModal 应该这样做;只要说它应该只激活jquery插件用来显示模式窗口的任何东西就足够了。

        2
  •  1
  •   spender    15 年前

    所以你想要加载弹出窗口?使用关闭弹出窗口的方法在弹出窗口就位的情况下呈现页面。在服务器上读取querystring,并在单个操作中呈现您想要的任何内容。唯一需要的JS是隐藏弹出窗口。

        3
  •  1
  •   karim79    15 年前

    你可以使用 facebox . 以编程方式调用一个相当跨浏览器弹出窗口,如下所示:

    $('#someLink').click(function(e) {
        e.preventDefault();
        $.facebox({ ajax: '/product/rubberball.aspx?promo=promo123' });
    });