$(document).ready中的语句(function()不起作用

时间:2014-10-13 14:03:47

标签: javascript jquery html css ajax

我们的if statement中有$(document).ready( function()未执行。该功能的所有其他组件都正常工作,但这似乎每次都失败。 Firebug显示没有与文件有关的错误,并且在设置断点时,Firebug会暂时停止,然后将页面加载到100%。

HTML form按钮悬停在按钮下方时,该语句可以检索正确的Login。看屏幕截图。一个显示完全相同的脚本在不同的页面上工作,在另一个.js文件中,一个显示它不起作用,而是出现undefined消息。两者都在js函数中的大量ready文件中。

Properly working Not working

$(document).ready函数是1600多行,问题函数是向下的。以下是陈述:

var dropdown = document.getElementsByClassName("login-mega-main");
    if (dropdown[0] != null){    
        $.ajax({
            url: '/public/login/dropdown_login.jsp',
            method: 'GET',
            success: function(response) { 
                dropdown[0].innerHTML=response.responseText;
            },
            failure: function(response){
                dropdown[0].innerHTML="<p>Failed to login. Please click 'Login' link</p>";
            }
        }); 
    }

出现undefined消息而不是错误消息的事实告诉我这些陈述甚至没有达到。在你说些什么之前,是的,class存在于页面中。工作屏幕截图和无法工作的屏幕截图具有相同的HTML标题。

<li><a href="contact/index.jsp">Contact Us</a>
      <li class="login-mega last"><a href="/public/user_profile.jsp"></a>
        <div class="login-mega-main">
            <div class="login-options">
            <form id="login" name="j_security_form" action="/public/j_security_check" method="post" accept-charset="UTF-8">
            <strong>Account Login</strong><br>
            Username:<br>
            <input type="text" name="j_username"><br>
            Password:<br>
            <input type="text" name="j_password"><br>
            <br>
            <input type="submit" value="Login"><br>
            <br>
            New users <a href="../user_registration.jsp">register here</a><br>
            <a href="../forgot_password.jsp">Forgot password?</a>
            <input type="hidden" name="auth_mode" value="basic">        
            <script>
            var newloc = document.location.href;
            newloc =newloc.replace('index.jsp','index.jsp');
            document.write('<input type="hidden" name="orig_url" value="'+newloc+'">');
            </script>
            </form>
            </div>
        </div>          
        </li>

我的猜测是括号被扔掉了,但是经过几个小时的淘洗,我们无法找到任何东西。由于两个页面(屏幕截图)都使用相同的HTML代码,因此我们真的不知所措。

1 个答案:

答案 0 :(得分:1)

您收到undefined,因为未定义response.responseText。只需使用response

即可
var dropdown = document.getElementsByClassName("login-mega-main");
    if (dropdown[0] != null){

        $.ajax({
            url: '/public/login/dropdown_login.jsp',
            method: 'GET',
            success: function(response) { 
                dropdown[0].innerHTML=response;
            },
            failure: function(response){
                dropdown[0].innerHTML="<p>Failed to login. Please click 'Login' link</p>";
            }
        }); 
    }

为了更好地理解jQuery $.get() visit here