2010-10-13 60 views

回答

0

编辑:

所以我会做的是简单地使用JSON并返回与例如消息200响应

PHP

$validationErrors = array(); 

    foreach($data as $name => $value){ 
    // validate each value, if its not valid append a message to the $validationErrors array 
    // like $validationErrors[$name] = $message; 
    } 

    if(!empty($validationErrors)){ 
    // send json headers so jquery can parse properly 
    header('Content-type: application/json'); 
    echo json_encode('valid'=>false, 'errors' => $validationErrors)); 
    exit; 
    } else { 
    // send json headers so jquery can parse properly 
    header('Content-type: application/json'); 
    echo json_encode(array('valid'=>true)); 
    exit; 
    } 

的jQuery:

$.ajax({ 
     url: '/url/for/whatever.php', 
     data: {'my': 'data'}, 
     dataType: 'json', 
     success: function(response){ 
     if(!response.valid){ 
      $.each(response.errors, function(name, msg){ 
       var errmsg = $('<div class="error"></div>').text(msg); 
       $('[name='+name+']').before(errmsg); 
      }); 
      alert('Errors were found!'); 
     } 
     } 
    }); 

这样你也可以显示e为每个字段提供反馈,允许用户更正它们。你可能需要修改我的错误信息插入,但你明白了。


假设你的意思使用$.ajax你会简单的分配误差函数:

$.ajax({ 
    url: '/url/for/whatever.php', 
    data: {'my': 'data'}, 
    error: function(){ 
    alert('An error occurred!'); 
    } 
    success: function(response){ 
    // whatever happens if the response is successful 
    } 
}); 

然而,对于要调用的误差函数的服务器必须使用400或500系列错误代码进行响应。例如,如果你正在处理你的php中的错误,然后输出错误消息,那么可以假设你将发送200响应,所以成功函数仍然会被调用。如果需要,可以使用php header()函数手动设置标题来操作。

+0

@prodigitalson,我喜欢你的屏幕名称。感谢代码。我已经在那里有'error:',但它似乎只适用于HTTP服务器代码。我需要的是如果我的PHP函数返回false,告诉用户他们的验证没有通过 – jim 2010-10-13 06:11:01

+0

Ahhhhh ....我没有读你的整个帖子。所以我可以手动发送标题。 – jim 2010-10-13 06:13:18

+0

如果要提醒用户出现用户错误,应该使用哪些服务器代码? – jim 2010-10-13 06:15:49

0

ajax有一个错误块,你可以把你的自定义消息放在错误块中。

+2

http://api.jquery.com/jQuery.ajax/ – kobe 2010-10-13 06:06:02

+0

好的,谢谢你的回答。你在说'错误:'? – jim 2010-10-13 06:06:10

+0

我是jquery的新手,我不知道应该怎么做 – jim 2010-10-13 06:06:42