我有一个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
提前致谢:)
答案 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