[英]jQuery/JS: Check for $_POST PHP variable and if it exists, call a jquery function to be executed
[英]Run jQuery function if PHP variable exists
我正在使用一个名为“ Bootbox”的Twitter引导插件,该插件显示了模式形式。 我只希望模态表单显示出来,如果mysql数据库中有一个“ popup” ID。 否则,我根本不希望函数运行。
这是我所拥有的:
var popupid = <?php if ($contact->find_popup()) { echo $contact->popup()->id; } ?>;
if(popupid) {
bootbox.dialog({
message: "<?php if ($contact->find_popup()) {
echo $contact->popup()->message;
};
?>",
title: "Contact Pop-Up",
buttons: {
danger: {
label: "Delete...",
className: "red",
callback: function() {
$.ajax({
url: "ajax_delete.php?table=popups&id=" + popupid,
type: "POST",
dataType: 'json',
success: function(response) {
//response here if data response
if (response) {
toastr.info('Successfully deleted popup!');
}
}
});
}
},
main: {
label: "Ok!",
className: "blue",
callback: function() {
}
}
}
});
}
我设置了一个名为popup的变量,该变量查看数据库中是否存在弹出窗口ID。 如果有一个,我的find_popup()方法返回true,否则返回false。 如果返回true,则popupid应该等于我需要的回显id。
如您所见,然后将弹出ID传递到ajax URL中。 我使用它来运行一个删除脚本,如果用户选择“删除...”,该脚本将删除弹出窗口。
如果出现弹出窗口,那么一切现在都可以正常进行,并且只有在出现弹出窗口时才可以。 如果没有,我的页面将无法正常工作。 我认为这是因为bootbox.dialog仍然被调用。
也许我写错了吗?
那么,如果您的数据库中没有popup_id,为什么要完全渲染javascript?
<?php
if ($contact->findPopup()) {
?>
<!-- javascript/html/whatever goes here -->
<?php
}
?>
然后,只有在数据库中存在有效的popup_id时,您的JavaScript才会呈现。
var popupid = <?php if ($contact->find_popup()) { echo $contact->popup()->id; } ?>;
在这里,一旦执行了PHP,您将:
// If a popup exists
var popupid = 123;
// If there is no popup
var popupid = ;
第二行将使您的JS崩溃。
我建议:
var popupid = <?php if ($contact->find_popup()) { echo $contact->popup()->id; } else { echo false; } ?>;
或如塞思建议的那样:
var popupid = <?php echo (($contact->find_popup()) ? $contact->popup()->id : false); ?>;
var popupid = "<?php if ($contact->find_popup()) { echo $contact->popup()->id; } else { echo false;} ?>";
if(popupid) {
bootbox.dialog({
message: "<?php if ($contact->find_popup()) { echo $contact->popup()->message; }; ?>",
title: "Contact Pop-Up",
buttons: {
danger: {
label: "Delete...",
className: "red",
callback: function() {
$.ajax({
url: "ajax_delete.php?table=popups&id=" + popupid,
type: "POST",
dataType: 'json',
success: function(response) {
//response here if data response
if (response) {
toastr.info('Successfully deleted popup!');
}
}
});
}
},
main: {
label: "Ok!",
className: "blue",
callback: function() {
}
}
}
});
}
感谢您的建议。 直到我将此行加引号,它才能正常工作!
var popupid = "<?php if ($contact->find_popup()) { echo $contact->popup()->id; } else { echo false;} ?>";
Siliconrockstar的建议也可以使用,但是我正在使用上面的方法,因为在检查find_popup时,弹出窗口ID存储为我需要的ajax url变量。 仍然可以工作...
感谢帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.