2010-10-13 50 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