我的表单是通过jQuery从PHP返回数据。如何根据jQuery中的响应创建条件语句。
这是jQuery:
$.ajax({
type: "POST",
url: "createAlbum.php",
data: postData,
success: function(data){
$('#message').fadeIn();
$('#message').html(data);
}
});
这是从PHP返回的内容:
if($error) {
echo $error;
}
else {
echo $success;
}
因此,如果响应成功,则消息应在几秒钟后隐藏,但如果是错误,则应等到用户更正它。像这样:
success: function(data){
$('#message').fadeIn();
$('#message').html(data);
if (data.response == 'success') {
alert('Success');
setTimeout(function() {
$('#message').fadeOut();
}, 5000 );
} else if (data.response == 'error') {
alert('Error');
}
}
答案 0 :(得分:3)
为什么不使用statusCode
设置来调用ajax()
并进行更细粒度的控制,而不仅仅是“成功”和“错误”?您的脚本可能(或将会)有许多不同的成功或失败方式。
statusCode(已添加1.5)地图默认值:{}
数字HTTP代码和地图 当函数被调用时 响应有相应的代码。 例如,以下内容将发出警报 当响应状态为404时:
$ .ajax({statusCode:{ 404:function(){ 警报('找不到页面'); 如果请求成功,状态代码将起作用 采取相同的参数 成功回调;如果它导致了 错误,他们采取相同的参数 作为错误回调。
<强>更新强>
我添加了一个示例,说明如何在Jquery中使用statusCode而不是ajax()
调用的成功和错误设置。首先,测试UI:
<html>
<head>
<title>jQuery Test Page</title>
<script type="text/javascript" src="jquery-1.6.js"></script>
<script type="text/javascript">
function displayMessage(message){
$('#message').fadeIn();
$('#message').html(message);
}
function successFunction(data){
displayMessage(data);
}
function notFoundFunction(){
displayMessage("Not Found!");
}
function errorFunction(){
displayMessage("An Error Occurred!");
}
function invokeAjax(test){
$.ajax({
type: "POST",
url: "test.php?test="+test,
//data: postData,
statusCode: {
200: successFunction,
404: notFoundFunction,
500: errorFunction,
}
});
}
</script>
</head>
<body>
<h1 id="message" style="display:none;"></h1>
<a href="javascript:invokeAjax('success');">Invoke Ajax - Success (200)</a><br>
<a href="javascript:invokeAjax('notfound');">Invoke Ajax - Not Found (404)</a><br>
<a href="javascript:invokeAjax('error');">Invoke Ajax - Error (500)</a><br>
</body>
</html>
这是Ajax调用的PHP脚本:
<?php
$test = $_GET['test'];
if($test == 'success'){
echo 'some meaningful data';
} else if($test == 'notfound') {
http_send_status(404);
} else if($test == 'error'){
http_send_status(500);
}
?>
我认为这是不言自明的,但如果您有任何其他问题,请不要犹豫。
答案 1 :(得分:0)
当然,要使AJ的解决方案正常工作,您需要使用正确的标头从服务器响应客户端 - http://no.php.net/manual/en/function.header.php:
header('HTTP/1.1 404 Not Found');
或
header('HTTP/1.1 500 Internal Server Error');
以下是HTTP代码列表:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
希望这会有所帮助:)
答案 2 :(得分:0)
感谢您的有用答案。我用JSON解决了它!
PHP:
if($error) {
echo json_encode(array('success' => false, 'text' => $error));
}
else {
echo json_encode(array('success' => true, 'text' => $success));
}
jQuery的:
if (data.success) {
alert('Success');
setTimeout(function() {
$('#message').fadeOut();
}, 5000 );
} else {
alert('Error ' + data.text);
}