0

我要完成的工作似乎很简单,但我对 PHP 的执行并没有深入的了解。我有一个带有是或否单选按钮的简单表单。我想在提交表单时启动一个模式窗口并显示所有回答是的问题。我可以使用 iframe 很好地启动模态窗口,因为我计划在模态中包含除了表单提交之外的其他内容,但是我正在使用的非常简单的 php 脚本没有显示在模态中。当我删除 fancybox 脚本并保持表单操作 php 文件相同时工作得很好。

我假设在不同时间触发的 jquery 和 php 脚本之间存在冲突,但不知道从哪里开始解决这个问题。下面是我正在使用的代码。任何帮助都会很棒,请记住,我不知道如何编写 php。

您可以在http://staging.drugrehabtest.com上看到一个工作示例

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<link rel="stylesheet" href="scripts/jquery.fancybox.css?v=2.1.5" type="text/css" media="screen" />
<script type="text/javascript" src="scripts/jquery.fancybox.pack.js?v=2.1.5"></script>

<script type="text/javascript">
    if(!jQuery.browser.mobile){
        jQuery(document).ready(function() {
            $(".fancybox").fancybox({
                'width'  : 920,
                'minHeight' : 230,
                'type'   : 'iframe',
                'padding': 20,
                'href': 'success.php',
            });
        });
    }
</script>

<form action="success.php" method="post" name="contact" id="contact">
    <input type="radio" class="checkbox" name="one" value="yes" title="Do you find yourself using drugs even when you don't want to?: Yes" />
    <label class="question">Do you find yourself using drugs even when you don't want to?</label>
    <input type="submit" name="Submit" id="submit" class="fancybox fancybox.iframe" />
</form>   

Success.php 页面(减去其他标准 html 元素)

<?php
    if ($_POST['one']=="yes") { echo "Do you find yourself using drugs even when you don't want to?"; }
?>
4

4 回答 4

1

您可以使用

$(document).ready(function(){
        $("#"+secc+"form").submit(function(){
            var formData = new FormData($(this)[0]);
            $.ajax({
                url: '../form/',
                type: 'POST',
                data: formData,
                async: false,
                success: function (data) {
                    //history,go(-1);
                },
                cache: false,
                contentType: false,
                processData: false
            });

        return false;
        });
    });

问题是'var formdata'的版本jquery仅适用于1.10,而fancybox不适用于此版本

于 2013-10-14T19:25:30.527 回答
0

以您的方式,数据不会去任何地方!您必须通过 ajax 发布您的数据,您需要进行一些调整。

 jQuery(document).ready(function() {
   $(".fancybox").fancybox({
    'width'  : 920,
    'minHeight' : 230,
    'type'   : 'iframe',
    'padding': 20,
    'href': 'success.php',
    'data': $("#contact").serializeArray(),//send all form fields
  });

通过这种方式,您可以将数据放在其他页面中......

也许这篇文章对你有更多帮助!

于 2013-08-26T19:17:47.837 回答
0
jQuery(document).ready(function() {
   $(".fancybox").fancybox({
    'width'  : 920,
    'minHeight' : 230,
    'type'   : 'iframe',
    'padding': 20,
    'href': 'success.php',
    'data': $("#contact").serializeArray(),//send all form fields
  });
于 2016-09-30T04:50:18.920 回答
-1

ok,这里换个方式,iframe方式好像有点老了,这里可以用ajax。像这样的东西:

首先在您的 html 中添加一个链接(例如,最后一个元素):

<form action="success.php" method="post" name="contact" id="contact">
    <input type="radio" class="checkbox" name="one" value="yes" title="Do you find yourself using drugs even when you don't want to?: Yes" />
    <label class="question">Do you find yourself using drugs even when you don't want to?</label>
    <input type="submit" name="Submit" id="submit" class="fancybox fancybox.iframe" /><!-- this is useless here -->
    <a id="check" data-fancybox-type="ajax" href="success.php" id="check">Result</a>
</form>  

根据这篇文章,之后我们通过点击链接通过ajax发送数据,并再次在脚本中得到答案:

<script type="text/javascript">
jQuery(document).ready(function() {
    $('#check').on("click", function (e) {
        e.preventDefault(); // avoids calling success.php from the link
        $.ajax({
            type: "POST",
            cache: false,
            url: this.href, // success.php
            data: $("#contact").serializeArray(), // all form fields
            success: function (data) {
            // on success, post returned data in fancybox
            $.fancybox(data, {
                // fancybox API options
                fitToView: false,
                openEffect: 'none',
                closeEffect: 'none'
            }); // fancybox
            } // success
        }); // ajax
    }); // on
}); //ready
</script>

另一件事是.browser 已从 jquery 中删除, 而不是您可以使用Modernizr参考

于 2013-08-27T05:04:40.087 回答