【问题标题】:Error trying to create a dialog popup using jQuery尝试使用 jQuery 创建对话框弹出窗口时出错
【发布时间】:2011-10-06 03:26:06
【问题描述】:

我是 jQuery 新手,我正在尝试向用户打开一个弹出对话框,以防出现

error : function(data)

到目前为止,我在 jQuery 代码中的内容是:

<script type="text/javascript">
$(document).ready(function() 
{
   var $dialog = $('<div></div>')
           .html('This dialog will show every time!')
           .dialog({
               autoOpen: false,
               title: 'Basic Dialog'
           });

    $('.vote_up').click(function() 
    {        
        alert ( "test: " + $(this).attr("data-problem_id") );
        problem_id = $(this).attr("data-problem_id");

        var dataString = 'problem_id='+ problem_id + '&vote=+';

        $.ajax({
                type: "POST",
                url: "/problems/vote.php",
                dataType: "json",
                data: dataString,
                success: function(data)
                {           
                    // ? :)
                    alert (data);   
                },
                error : function(data) 
                {
                    //alert("ajax error, json: " + data.responseText);
                    errorMessage = data.responseText;

                    if ( errorMessage == "not_logged_in" )
                    {
                        alert ("errr");

                        // Try to create the popup that asks user to log in.
                        //$(this).dialog();

                        $dialog.dialog('open');
                        // prevent the default action, e.g., following a link
                        return false;
                    }
                    else
                    {
                        alert ("not");
                    }

                    //alert(JSON.stringify(data));
                    //for (var i = 0, l = json.length; i < l; ++i) 
                    //{
                    //  alert (json[i]);
                    //}
                }
            });


        //Return false to prevent page navigation
        return false;
    });

    $('.vote_down').click(function() 
    {
        alert("down");

        problem_id = $(this).attr("data-problem_id");

        var dataString = 'problem_id='+ problem_id + '&vote=-';        

        //Return false to prevent page navigation
        return false;
    });    
});
</script>

我收到一个 JavaScript 错误,指出 Object 没有方法对话框。这对我来说似乎是希腊语:)

如果你点击“投票”链接,就会出现错误:http://www.problemio.com

我该如何解决这个问题?我可以让那个对话框出现吗?它将要求人们登录网站或注册。

谢谢!!

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    不确定 var $dialog = $('&lt;div&gt;&lt;/div&gt;') 是否完全合法!

    我认为你需要这样做;

    var $dialog = $('.MyDiv')

    然后

    <div class="MyDiv"></div>
    

    【讨论】:

    • 我明白了——我应该把那个 div 放在页面的什么地方?在页脚下方某处的最底部?它会在哪里重要吗?谢谢!
    • 是的,只要把它贴在页面的某个地方,因为 jQuery ui 稍后会放置它
    【解决方案2】:

    您需要在页面上包含jQuery UI JavaScript and CSS files。您还需要将对话框元素附加到页面的 DOM:

    var $dialog = $('<div></div>')
           .html('This dialog will show every time!')
           .appendTo('body')
           .dialog({
               autoOpen: false,
               title: 'Basic Dialog'
           });
    

    旁注:我强烈建议您更新到更新版本的 jQuery。您的网站使用的是 1.3(2009 年 1 月发布); the latest version 是 1.6.4(2011 年 9 月)。

    【讨论】:

    • 我会更新 jQuery 版本。是否就像换掉标题中的链接以引用新链接一样简单?
    • 是和不是。升级可能会破坏您当前代码中的现有功能。
    • 顺便说一句,按照您的建议执行 .appendTo('body') 与页面上的其他建议创建新 div 并附加到该 div 有什么区别?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多