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

时间:2015-03-05 17:36:06

标签: javascript php jquery

我正在使用名为“Bootbox”的Twitter引导程序插件。这显示了一种模态形式。 如果有一个弹出窗口,我只想显示模态表单。在mysql数据库中的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。我使用它来运行删除脚本,如果用户选择&#34;删除...&#34;则删除弹出窗口。

现在一切正常如果只有弹出窗口存在。如果没有,我的页面无法正常工作。我认为这是因为仍然调用了bootbox.dialog。

也许我写错了?

3 个答案:

答案 0 :(得分:2)

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); ?>;

答案 1 :(得分:2)

那么,如果数据库中没有popup_id,为什么要渲染javascript呢?

<?php

if ($contact->findPopup()) {

?>

<!-- javascript/html/whatever goes here -->

<?php

} 

?>

如果数据库中存在有效的popup_id,则只会呈现您的javascript。

答案 2 :(得分:1)

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所需的变量。仍然有效...

感谢帮助。