2011-05-04 50 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