Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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
Javascript 使用表单参数onSubmit运行PHP脚本(发送电子邮件)_Javascript_Php_Jquery_Ajax_Forms - Fatal编程技术网

Javascript 使用表单参数onSubmit运行PHP脚本(发送电子邮件)

Javascript 使用表单参数onSubmit运行PHP脚本(发送电子邮件),javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我正在尝试制作一个表单,在执行操作并离开站点之前,使用onSubmit运行脚本/将一些数据传递到PHP页面 我这样做的原因是设置一封确认电子邮件,发送给输入表单的人,而表单操作保存他们通过insightly输入的信息 我已经尝试了我能想到的一切,所以我为那些破烂的代码感到抱歉 这是我的表格: <form id="commentForm" action="contactmail.php" method="post" onSubmit=""> <input type="h

我正在尝试制作一个表单,在执行操作并离开站点之前,使用onSubmit运行脚本/将一些数据传递到PHP页面

我这样做的原因是设置一封确认电子邮件,发送给输入表单的人,而表单操作保存他们通过insightly输入的信息

我已经尝试了我能想到的一切,所以我为那些破烂的代码感到抱歉

这是我的表格:

<form id="commentForm" action="contactmail.php" method="post" onSubmit="">

    <input type="hidden" name="formId" value="/*InsightlyKeyString*/"/>

    <p class="normal">
        <label for="insightly_firstName">First Name * :<br></label>
        <input id="insightly_firstName" name="FirstName"  type="text" placeholder=" First Name"/>
    </p>

    <p class="normal">
        <label for="insightly_lastName">Last Name :<br></label>
        <input id="insightly_lastName" name="LastName"  type="text" placeholder=" Last Name" />
    </p>
    <p class="normal">
        <input type="hidden" name="emails[0].Label" value="Work"/>
        <label for="emails[0]_Value">E-Mail * :</label>
        <input id="emails[0]_Value" type="email" name="email" class="emails" placeholder=" your@email.com"/>
    </p>
    <p class="normal">
        <input type="hidden" name="phones[0].Label" value="Work" id="phones"/>
        <label for= "phones[0]_Value">Phone * :</label>
        <input id="phones[0]_Value" name="phones" type="text" placeholder="(incl. Area Code) Contact No. "/>
        <span id="instructions">Fields marked with an * required</span>
    </p>

    <p class="normal">
        <input class="buttoninput" type="submit" value="Submit"/>
    </p>
因此,基本上我设想的工作方式是,我的表单应该运行sendMail(),使用ajax调用将数据传递到contactmail.php(一个只包含echo和mail()的临时文件),如果返回true,应该继续正常提交


但是,当我运行它时,它从不ping contactmail.php(我尝试在页面上使用快速警报对其进行测试)。这是有意的吗?我甚至可以在onSubmit中获得要执行的辅助页面吗?或者只能对此使用操作

我没有看到
.submit()
函数使用
return false停止它这样您就可以启动ajax请求了

$('form').on('submit', function(){
    sendMail();
    return false; //stop the default form submission
});
现在使用此函数从调用sendMail()。。但是,当您收到来自服务器的真实回执时,需要对其进行修改以正确执行重定向

下一个问题是在函数中声明函数,但从未实际执行内部函数。我也不认为这里需要两个函数,它是完全冗余的,而且

现在,我们需要修改sendmail函数,并确定完成后要重定向到的位置

function sendMail(){          

    $.ajax({
        type: 'post',
        url: 'contactmail.php',
        data:{
            uemail: $('.emails').val(),
            ufname: $('#insightly_lastName').val(),
            ulname: $('#insightly_firstName').val()
        },
        success: function(data){
            if(data == true){
                window.location = 'mysite.com/thank-you.php';
            }
        }
    });
}

上面有两点需要注意。我已经删除了你的变量赋值。再一次,它过于冗长。不需要声明一个只使用一次的变量。另外,我正在您的
成功函数中查找
contactmail.php
中的
返回true
。此外,我还使用了
窗口.location
重定向到
感谢
页面,当设置为true时。

我没有看到
.submit()
函数,您可以使用
return false停止该函数这样您就可以启动ajax请求了

$('form').on('submit', function(){
    sendMail();
    return false; //stop the default form submission
});
现在使用此函数从调用sendMail()。。但是,当您收到来自服务器的真实回执时,需要对其进行修改以正确执行重定向

下一个问题是在函数中声明函数,但从未实际执行内部函数。我也不认为这里需要两个函数,它是完全冗余的,而且

现在,我们需要修改sendmail函数,并确定完成后要重定向到的位置

function sendMail(){          

    $.ajax({
        type: 'post',
        url: 'contactmail.php',
        data:{
            uemail: $('.emails').val(),
            ufname: $('#insightly_lastName').val(),
            ulname: $('#insightly_firstName').val()
        },
        success: function(data){
            if(data == true){
                window.location = 'mysite.com/thank-you.php';
            }
        }
    });
}

上面有两点需要注意。我已经删除了你的变量赋值。再一次,它过于冗长。不需要声明一个只使用一次的变量。另外,我正在您的
成功函数中查找
contactmail.php
中的
返回true
。此外,我还使用了
窗口.location
重定向到
谢谢
页面,当设置为true时。

我认为您应该使用jquery。大概是这样的:

$('#commentForm').submit(function(e) {
    e.preventDefault();
       $.ajax({
         type: 'post',
         url: 'contactmail.php',
         data:$(this).serialize(),
         success: function(data){
             return true;
         }
     });
});

然后,在您的
contactmail.php
文件中,您将在
$\u POST
中获得所有数据。请注意,
$\u POST的索引将与输入的属性名相同。

我认为您应该使用jquery。大概是这样的:

$('#commentForm').submit(function(e) {
    e.preventDefault();
       $.ajax({
         type: 'post',
         url: 'contactmail.php',
         data:$(this).serialize(),
         success: function(data){
             return true;
         }
     });
});

然后,在您的
contactmail.php
文件中,您将在
$\u POST
中获得所有数据。请注意,
$\u POST
的索引将与输入的属性名称相同。

我只是过度声明了一些事情,因为我需要进行调试,以确保默认值按我希望的方式运行。非常感谢您的回复,我认为忘记更改默认值是我的主要问题。今晚我将从您的示例中尝试实现这一点=)按照我理解问题的方式,在
sendMail
的成功中,它不需要重定向,而是让常规表单提交继续进行。@Gorkk您知道……随着时间的推移,您会感觉到人们想要什么。并不是每个人都能说一口流利的英语,所以我试图弄清他们的真正目的是什么。在这种情况下,我可能看得太远了,而你可能是对的@Ohgodwhy或我可能没有正确的感觉(使用表单数据通过ajax发送电子邮件,然后提交表单很尴尬,但使用ajax提交只是在事后重定向也是如此^^)@Ohgodwhy Hi只是突然出现,以确认我使用您的示例完成了此工作,谢谢!!!我只是过度声明了一些事情,因为这是我为调试所做的事情,以确保默认值按我希望的方式运行。非常感谢您的回复,我认为忘记更改默认值是我的主要问题。今晚我将从您的示例中尝试实现这一点=)按照我理解问题的方式,在
sendMail
的成功中,它不需要重定向,而是让常规表单提交继续进行。@Gorkk您知道……随着时间的推移,您会感觉到人们想要什么。并不是每个人都能说一口流利的英语,所以我试图弄清他们的真正目的是什么。在这种情况下,我可能看得太远了,而你可能是对的@Ohgodwhy或我可能没有正确的感觉(使用表单数据通过ajax发送电子邮件,然后提交表单很尴尬,但使用ajax提交只是在事后重定向也是如此^^)@Ohgodwhy Hi只是突然出现,以确认我使用您的示例完成了此工作,谢谢!!!