如何在Jquery中调用else if语句中的函数

时间:2012-05-21 15:13:24

标签: jquery

我有一个jquery消息框的以下代码。如果单击以下链接,将显示一个消息框。

<p><a id="msgup" class="">Demo Top</a></p>
<script>
    $("#msgup").bar({
        color            : '#1E90FF',
        background_color : '#FFFFFF',
        removebutton     : false,
        message          : 'Your profile customization has been saved!',
        time             : 2000
    }); 
</script>

现在我想要实现的是在我的ajax服务器响应中将“冷”作为值时显示消息框。为此,我尝试了以下代码。但它不起作用。可能是因为它无法调用jquery函数。你能问一下如何让它发挥作用吗?

$.ajax({  
    type: "POST",
    url: "<?php echo base_url(); ?>contents/hello",
    data: "id="+a_href,
    success: function(server_response) {
        if (server_response == 'cold') {

        //Beginning of the code for message box
        $("#msgup").bar({
            color            : '#1E90FF',
            background_color : '#FFFFFF',
            removebutton     : false,
            message          : 'Your profile customization has been saved!',
            time             : 2000
        });
        //End of the code for message box

        // Instead of the message box code I have tried 
        // alert('Message'); and it worked
        }                       
        else {
            $("#result").html(server_response);
        }               
    }                              
}); //$.ajax ends

提前致谢:)

4 个答案:

答案 0 :(得分:2)

$("#msgup").bar(…)

将点击事件绑定到#msgup(只是猜测),因此从ajax代码中调用它将无济于事。实现目标的一种可能方法是初始化$ .bar并触发ajax代码中的单击,也许这样:

<p><a id="msgup" class="">Demo Top</a></p>
<script>
    $("#msgup").bar({
        color            : '#1E90FF',
        background_color : '#FFFFFF',
        removebutton     : false,
        message          : 'Your profile customization has been saved!',
        time             : 2000
    });
    $.ajax({
        type: "POST",
        url: "<?php echo base_url(); ?>contents/hello",
        data: "id="+a_href,
        success: function(server_response){
            if (server_response == 'cold'){
                //Beginning of the code for message box
                $("#msgup").click();
                //End of the code for message box
           } else {
              $("#result").html(server_response);}                   
           }
        }                             
    });   
</script> 

答案 1 :(得分:0)

您可以在成功功能中添加alert()console.log()。致电alert(server_response)。甚至,alert(typeof(server_response))。您还可以通过添加一个错误:条件(使用它自己的函数调用就像成功一样)来查看AJAX是否正常返回。

我猜你是想要检查而不是'',对于文字'null'甚至是对象null,只要它进入成功函数。

if(server_response ==''|| server_response =='null'|| server_response == null || typeof(server_response)=='undefined'){...

一旦你发现你希望它回来的方式,你可以只使用你需要的支票。

答案 2 :(得分:0)

您是否尝试将其包装在setTimeout中(function(){$(“#msgup”)。bar({});},100);看看它是否是时间问题?如果是这样,而不是将其置于成功之中:或许将其完整:?

另外,如果你在if()中放入一个警告,并且它被调用,那么那个时候存在ID #msgup的HTML元素(再次回到时间考虑)。

答案 3 :(得分:0)

查看jquery.bar.js$("#msgup").bar(…)只是初始化元素"#msgup"以进行点击事件绑定。如果触发了click事件,jquery.bar插件将创建新元素并将其显示为消息框。因此,您需要触发click事件。 试试这个

$.ajax({  
    type: "POST",
    url: "<?php echo base_url(); ?>contents/hello",
    data: "id="+a_href,
    success: function(server_response) {
        if (server_response == 'cold') {

        //Beginning of the code for message box
        $("#msgup").bar({
            color            : '#1E90FF',
            background_color : '#FFFFFF',
            removebutton     : false,
            message          : 'Your profile customization has been saved!',
            time             : 2000
        });
        $("#msgup").click(); //fire click event
        //End of the code for message box

        // Instead of the message box code I have tried 
        // alert('Message'); and it worked
        }                       
        else {
            $("#result").html(server_response);
        }               
    }                              
}); //$.ajax ends