2011-05-04 53 views
2

我的表单正在通过jQuery从PHP返回数据。我如何根据jQuery中的响应创建条件语句。通过jQuery基于PHP响应的条件语句

这是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

这是怎么回事?这看起来很适合我。 – 2011-05-04 20:45:03

+0

这不适合我。即使数据正确,它也会返回错误警报。 – input 2011-05-04 20:46:50

+0

你知道吗?哪个答案适合你? – 2011-05-06 00:14:09

回答

3

你为什么不使用你的电话的statusCode设置ajax()并有更细致的控制不仅仅是“成功”和“错误”?有(或将会)有许多不同的方式可以让您的脚本成功或失败。

的StatusCode(加入1.5)地图默认值:{}

的数字HTTP代码和 功能的地图当 响应具有相应的代码被调用。 例如,下面将提醒 当响应状态为404:

$就({的StatusCode:{ 404:功能(){ 警报(页面未找到'); }}} );如果请求成功,则状态代码功能 采用与 成功回调相同的参数;如果它导致 错误,它们将采用与错误回调相同的参数 。


UPDATE:

我已经添加了如何使用的StatusCode,而不是成功和错误设置jQuery中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> 

下面是由阿贾克斯称为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); 
} 
?> 

我认为这是不言自明的,但如果你有任何问题,请不要犹豫问。

+0

感谢您的回复!我如何在上面的脚本中使用'statusCode'? – input 2011-05-04 21:11:45

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

很好的工作计算出来。如果你想看到不同的方式来做到这一点,请查看我的更新答案。 – 2011-05-05 01:47:42