Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表单数据未出现在php文件中_Php_Jquery_Html_Fancybox - Fatal编程技术网

表单数据未出现在php文件中

表单数据未出现在php文件中,php,jquery,html,fancybox,Php,Jquery,Html,Fancybox,所以我不能完全理解发生了什么。我正在使用启动电子邮件提交过程。此过程收集信息(姓名、电子邮件等),然后通过“post”表单发送这些值。然后,这个php文件(mail.php)接受这些值并使用它们填充适当的字段以发送邮件消息。看起来很直截了当 消息发送,但是我从电子邮件提交表单中检索的数据似乎不存在。当我从fancybox中取出表单并在页面上清楚地显示它时,它会将值很好地发送到php文件,所以很明显这与fancybox有关 我不完全理解fancybox(没有查看源代码),也没有在搜索类似问题时获得

所以我不能完全理解发生了什么。我正在使用启动电子邮件提交过程。此过程收集信息(姓名、电子邮件等),然后通过“post”表单发送这些值。然后,这个php文件(mail.php)接受这些值并使用它们填充适当的字段以发送邮件消息。看起来很直截了当

消息发送,但是我从电子邮件提交表单中检索的数据似乎不存在。当我从fancybox中取出表单并在页面上清楚地显示它时,它会将值很好地发送到php文件,所以很明显这与fancybox有关

我不完全理解fancybox(没有查看源代码),也没有在搜索类似问题时获得积极的结果(也许我只是使用了不正确的搜索词)

无论如何,如果有人能在这里指导我的仪式方向,因为这是一件令人沮丧的事情

供参考:

HTML-

  <form id="default-behavior" action="mail.php" method="post">
js-

编辑 使用jquery post方法进行了尝试,但仍然有相同的结果(咳嗽,没有结果):

为了进一步确认这与fancybox直接相关,我尝试了带有显式参数的jquery post,它正确地发送了数据,即:

    $("#btnSubmit").click(function () {
    $.post("mail.php", { email: "email@email.com", story: "blah blah test story" });
    //$('#default-behavior').submit();
});
好了,问题解决了

通过使用jquery$.post()方法,我能够将表单值发送到php文件

像这样:

  $("#btnSubmit").click(function () {
    var ml = $("#email").val();
    var stry = $("#story").val();

    $.post("mail.php", { email: ml, story: stry });
});  
这符合我的需要,因此有效地解决了这个问题。不过我还有几个问题。起初我认为fancybox可能正在重新创建表单元素,并将“克隆”元素放在fancybox中,因此当尝试访问原始元素时,它只会显示“”而不是输入的值。但是,通过显式地将元素分配给js变量,然后通过post将这些变量发送到.php文件(这显然是可行的),这让我有了不同的想法(除非在这个过程中我遗漏了什么)。所以我很想解决这个问题,找出为什么在调用
$(“element”).serialize()时它会传递空值

对于这个应用程序,这是一个相当不重要的因素-显式赋值是次要的,因为值太少了。然而,当向服务器端传递大量值时,这显然是一个巨大的问题,因此,解决这个完全相关但独立的问题确实是件好事


tl;dr-该死的fancybox。

看起来您没有使用
jQuery
submit函数发送任何值。为什么你首先需要一个JS来控制这个简单的提交?我的问题就是。。。输入按钮的重新映射是怎么回事?删除该选项,然后使用已处于“默认”状态的直接提交按钮。请参阅该页上的第5页。我将此用作解决方法,因为提交按钮一开始根本不起作用。fancybox的另一个结果。我怀疑解决这个问题也会解决这个问题,但更重要的是,我需要弄清楚——这是在我做这件事之前发生的,就像在中一样——我在fancybox外放置了一个提交按钮,数据仍然没有显示在php文件中。@Dan——我尝试了这个,在我尝试jquery提交按钮解决方法之前。我现在将尝试这个仪式…我仍然很好奇为什么数据嵌套在fancybox包装中时无法发送。。。
    $(document).ready(function() {
$("#story").text("");

$("a#inline").fancybox({
    'hideOnContentClick': true,
    'showCloseButton'   : true,
        'autoDimensions': true      
});

$("#submitClick").fancybox({
    'hideOnContentClick': true,
    'showCloseButton'   : true,
        'autoDimensions': true      
});

$("#btnSubmit").click(function () {
    $('#default-behavior').submit();
});
    });        
        $("#btnSubmit").click(function () {
    $.post("mail.php", $("#default-behavior").serialize());
    //$('#default-behavior').submit();
});
    $("#btnSubmit").click(function () {
    $.post("mail.php", { email: "email@email.com", story: "blah blah test story" });
    //$('#default-behavior').submit();
});
  $("#btnSubmit").click(function () {
    var ml = $("#email").val();
    var stry = $("#story").val();

    $.post("mail.php", { email: ml, story: stry });
});