Php 处理jquery.ajax结果并在其旁边显示各个字段的验证状态
在客户端验证“我的字段”并尝试在字段旁边为每个字段显示警告不是问题:Php 处理jquery.ajax结果并在其旁边显示各个字段的验证状态,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,在客户端验证“我的字段”并尝试在字段旁边为每个字段显示警告不是问题: <div class="formblock"> <label class="screen-reader-text">Email</label> <input type="text" name="email" {if $smarty.session.email} value={$smarty.session.email} disabled {/if} id="email"
<div class="formblock">
<label class="screen-reader-text">Email</label>
<input type="text" name="email" {if $smarty.session.email} value={$smarty.session.email} disabled {/if} id="email" class="txt requiredField email" placeholder="Email:"/>
</div>
<div class="formblock">
<label class="screen-reader-text">Message</label>
<textarea name="comments" id="commentsText" class="txtarea requiredField" placeholder="Message:"></textarea>
</div>
然而,在服务器端,我通常的做法是对每个字段执行验证,然后将错误消息附加为var($ERRORTEXT
,在这种情况下),最后执行回显,并在ajax成功后在表单顶部显示
$ERRORTEXT .= " <li> Name has to contain more than two characters </li> ";
if ($error)
{
echo $ERRORTEXT;
}
$ERRORTEXT.=“名称必须包含两个以上的字符” ”;
如果($error)
{
echo$ERRORTEXT;
}
如何对每个字段执行此操作(类似于我在客户端执行的操作),并将其返回到它们旁边的范围?
我假设,与其用echo返回一个var,我可能还需要返回一个json结果,然后处理它?yourfile.php
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
$validationData = json_decode($_POST['validationData'], true);
//do validation stuff here
//$validationData is an associative array containing all your validation data
//sent from the client's AJAX call
$data = array('error' => 'my errormessage');
//serializing some dummy data to the client
echo json_encode($data);
如何将表单数据转换为JSON:
someotherfile.htm
$.ajax({
url: 'yourfile.php',
data: { validationData: JSON.stringify(yourFormDataObject) },
success: function(data){
console.log(data.error); //'my errormessage'
}
});
从服务器接收的解析对象,
data
,可以包含一个与元素匹配的id属性,以及显示在它旁边的消息。序列化表单->发送到服务器并验证->将验证结果序列化为JSON并在客户端处理。让我知道是否有任何不明确的地方谢谢是最后一点,我需要一个我可能的示例(将验证结果序列化为JSON并在客户端处理),看看什么是最好的方法。我添加了一个示例
$('.requiredField').each(function () {
if ($.trim($(this).val()) == '') {
var labelText = $(this).prev('label').text();
$(this).parent().append('<span class="error">You forgot to enter a ' + labelText + '.</span>');
$(this).addClass('inputError');
hasError = true;
}
});