Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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 处理jquery.ajax结果并在其旁边显示各个字段的验证状态_Php_Javascript_Jquery_Ajax - Fatal编程技术网

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;
    
        }
    });