2

这有3个要素。

  • HTML 表单
  • AJAX 连接发送表单值并接收和解析来自 PHP 脚本的响应
  • PHP 脚本决定值是好还是坏并发送回适当的响应(可能是 XML 格式以便于 javascript 函数解析?)

当 PHP 查看并处理发送的数据,将其插入数据库或对其进行任何操作时,它需要发回响应或响应集合,以便 javascript 可以向用户显示正确的错误消息. 也许还在输入错误的元素周围放置红色边框或其他东西。

这通常是如何完成的,在两端?我在想 PHP 应该只发回简单的数字错误代码,而 javascript 会在不同的 div 中设置正确的文本错误消息。但我不太确定,我也不确定我应该在谷歌上搜索什么来找到答案。

(顺便说一句,我不是在谈论 HTTP 错误代码)

4

3 回答 3

2

使用此 jquery ajax 函数将数据发布到 php 文件
然后对数据执行任何操作(在数据库中发送或制作一些集合),然后回显您将在成功部分中捕获的结果。
然后把你的结果放在一个 div 或者你想要的地方。

$.ajax({           
            type: "POST",  
            url:"scripts/dummy.php",  
            data:"dummyData="+dummyData,

            beforeSend: function()
            {                   

            },
            success: function(resp)
            {               
                $("#resultDiv").html(resp);
            }, 

            complete: function()
            {

            },

            error: function(e)
            {  
            alert('Error: ' + e);  
            }  

    }); //end Ajax
于 2012-09-20T12:11:24.653 回答
1

您所要求的称为验证。
有服务器端验证和客户端验证。

第一个是最重要的,因为您不希望用户破坏您的数据库。第二个对您的客户很重要。因为它可以让他迅速响应表格中无效的任何内容(红色边框)。

如果您想验证表单客户端,通常使用 Javascript 完成。对于服务器端验证,我会使用 JSON 作为服务器和客户端之间的通信,因为 php 和 javascript 都知道如何处理它。

对于 php: http:
//php.net/manual/en/function.json-encode.php
http://php.net/manual/en/function.json-decode.php

对于 JS。只需访问结果参数:

   success: function(response){
        var json = $.parseJSON(response.responseText);
   }
于 2012-09-20T12:15:41.743 回答
1

Ajax 联系表示例:(最初是荷兰语,有点旧且编码错误)

请记住,此示例需要 jquery。只需从他们的网站下载 jquery.js 并将其添加到 HTML 中的脚本中

表单.html

<form id="frm_contact" name="contactformulier">
<label>Naam<span style="color:red">*</span></label><br/>
<input type="text" size="15" maxlength="50" name="naam" />
<br/><br/>

<label>Bedrijf</label><br/>
<input type="text" size="15" maxlength="50" name="bedrijf" />
<br/><br/>

<label>Email<span style="color:red">*</span></label><br/>
<input type="text" size="15" maxlength="50" name="tmail" />
<br/><br/>

<label>Bericht<span style="color:red">*</span></label><br/>
<textarea name="tekst">
</textarea>
<br/><br/>
(<span style="color:red">*</span>) Required fields!
<br/><br/>
<div id="subbutton">Send</div>
</form>
<div id="error-msg"></div>

form.html (javascript 代码)

<script>
$(document).ready(function(){
var err="";
$("#subbut").click(function(){
$.post("PHP/ajax_contact.php", $("#frm_contact").serialize(),
function(data){
switch(data){
case '0':
err="<span><center>Thanks for contacting us!</center></span>";
$("#frm_contact").hide();
break;
case '1':
err="Invalid email!";
break;
case '2':
err="Fill in all fields please!";
break;
case '3':
err="Error sending this mail.";
break;
default:
err="<center>Mail server is offline.</center>"; //Or whatever error
$("#frm_contact").hide();
}
$("#error-msg").html("<br/>"+err+"<br/>");
});
});
});
</script>

PHP/ajax_contact.php

<?php

function check_email_address($email) {
  if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    return true;
}
return false;
}

$naam = trim($_POST['naam']);
$bedrijf = trim($_POST['bedrijf']);
$tmail = trim($_POST['tmail']);
$tekst = trim($_POST['tekst']);
if(isset($naam ) && isset($tmail) && isset($tekst)){
    if(!empty($naam) && !empty($tmail) && !empty($tekst)){
        if(check_email_address($tmail)){
            $to      = 'name@something.com';
            $subject = 'Some subject';
            $message = 'Name: '.$naam.'  ////  Company: '.$bedrijf.'
-------------------------------------------------------
'.$tekst.'
-------------------------------------------------------
Sended on: '.date("F j, Y, g:i a").' - from: www.somthing.com';
            $headers = 'From: '. $tmail . "\r\n" .
                'Reply-To: '. $tmail . "\r\n" .
                'X-Mailer: PHP/' . phpversion();

            mail($to, $subject, $message, $headers);
            echo '0'; //Succes <3
        }else{
            echo '1'; //Invalid mail adres
        }
    }else{
        echo '2'; //Empty fields
    }
}else{
    echo '3'; //Fail post
}

?>
于 2012-09-20T12:31:40.657 回答