繁体   English   中英

如果PHP变量存在,请运行jQuery函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM