javascript - 验证javascript文件上的信息后如何将数据发送到php

标签 javascript php html ajax

我听说过 Ajax/XMLhttprequest,但我不太确定这是否是我将数据从 javascript 变量传输到 php 所需要的。

该网页基本上是一个联系我们的页面,客户在其中输入他们的信息和电子邮件,javascript 检查输入是否已输入并验证电子邮件是否有 @。如果一切正常,那么客户将能够提交表格,并且应该会向我发送一封电子邮件。

我做了两件事,1 我可以让 php 文件向我发送电子邮件,但是我将不得不忽略 javascript 验证。 2 我可以让 javacript 验证正常工作,但是 php 文件无法正常工作,因为我无法传输数据。我知道 javascript 在客户端执行,而 php 在服务器端执行,这就是为什么我认为我需要在将信息发送到服务器之前在客户端验证信息。

HTML

       <form id="uDF" method="post" onsubmit="submitValidation()">
            <input name="uDFName" type="text" id="fName" placeholder="Name"><br>
            <input name="uDFNumber" type="text" id="phone" placeholder="Mobile/Phone Line"><br>
            <input name="uDFEmail" type="text" id="email" placeholder="Email"><br>
            <input name="uDFSubject" type="text" id="subject" placeholder="Subject"><br>
            <textarea name="uDFMessage" placeholder="Message......"></textarea><br>
            <input type="submit" name="uDFButton" value="Submit" class="btnSubmit" id="test">
        </form>

Javascript

function submitValidation(){
var data = [document.forms ["uDF"] ["uDFName"].value, document.forms ["uDF"] ["uDFNumber"].value,
document.forms ["uDF"] ["uDFEmail"].value, document.forms ["uDF"] ["uDFSubject"].value,
document.forms ["uDF"] ["uDFMessage"].value,]

var char = ''; // variable used to check whether email has @
var x;
var isEmail = false;
var isNotEmpty = false;

//for loop checks email for @ char
for(x = 0; x<data[2].length;x++)
{
    char = data[2].charAt(x);
    if(char === "@"){
        isEmail = true;
        break;
    }
}

var i;

//for loop check if data is collected
for(i=0;i < 5;i++){
    if(data[i] === ""){
        isNotEmpty = false;
    }else{
        isNotEmpty = true;
    }
}
if(isEmail === true && isNotEmpty === true)
{
    THIS IS WHERE I SHOULD TRANSFER THE DATA TO PHP
}else if (!isNotEmpty){
    alert('Empty fields');
}else if(!isEmail){
    alert("Please enter valid email!");
}
}

PHP

<?php
$uDFName = $_POST['uDFName'];
$uDFNumber = $_POST['uDFNumber'];
$uDFEmail = $_POST['uDFEmail'];
$uDFSubject = $_POST['uDFSubject'];
$uDFMessage = $uDFName . "\r\n" . $uDFNumber . "\r\n" . "";

// In case any of our lines are larger than 70 characters, we should use 
wordwrap()
$message = wordwrap($message, 70, "\r\n");
mail($uDFEmail, $uDFSubject, $uDFMessage);

如果我将它作为 action=("mail.php) 放在表单上,​​PHP 就可以工作,但是当然不会进行任何验证。

最佳答案

验证完成后

你可以这样试试

它将像这样工作。

验证后它将调用外部php 文件。它将使用此 $('#yourform').serialize() 将所有 input type 表单数据发送到该 php 文件中。

你可以在你的 php 文件中获取 input form data $name = $_POST['name'];

这将与传统的 php GETPOST 一样工作,但这里的概念是没有页面加载。

希望你现在能看懂。

function submitValidation(){ 

var data = [document.forms ["uDF"] ["uDFName"].value, document.forms ["uDF"] ["uDFNumber"].value, document.forms ["uDF"] ["uDFEmail"].value, document.forms ["uDF"] ["uDFSubject"].value, document.forms ["uDF"] ["uDFMessage"].value,];

var char = ''; // variable used to check whether email has @
var x;
var isEmail = false;
var isNotEmpty = false;

//for loop checks email for @ char
for(x = 0; x<data[2].length;x++)
{
    char = data[2].charAt(x);
    if(char === "@"){
        isEmail = true;
        break;
    }
}

var i;

//for loop check if data is collected
for(i=0;i < 5;i++){
    if(data[i] === ""){
        isNotEmpty = false;
    }else{
        isNotEmpty = true;
    }
}
if(isEmail === true && isNotEmpty === true)
{
    THIS IS WHERE I SHOULD TRANSFER THE DATA TO PHP
     /**** Your Ajax ****/
    $.ajax(
    {
       url: 'yourphpfile.php',
       type: 'post',
       data: $("#uDF").serialize(),
       success: function(response) {
         console.log(response);
       }
    });
   return false;


}else if (!isNotEmpty){
    alert('Empty fields');
    return false;
}else if(!isEmail){
    alert("Please enter valid email!");
    return false;
}



}

关于javascript - 验证javascript文件上的信息后如何将数据发送到php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44774293/

相关文章:

javascript - 如何将 JavaScript 类实例与对象合并?

javascript - 在循环集合中寻找最短路径

javascript - MongoDB - 相当于 LEFT JOIN,其中一个集合不存在

PHP:无法使用带有函数 stream_socket_client() 的 TLS 协议(protocol)设置私钥文件

javascript - 如何通过 FTP 客户端将单独的 HTML 文件上传到 wordpress 站点?

html - 将鼠标悬停在底部时更改 div 的高度

html - 列在不规则标题下的流体布局? - CSS

javascript - 参数是否会使 JavaScript GC 无法收集对象?

php - 如何清理 PHP 中的搜索栏字符串

html - 为什么 p 元素占用的空间比需要的多?