2011-05-24 90 views
1

我有這小小的代碼發佈到我的服務器AJAX捕捉正確的錯誤代碼

$.ajax({ 
     type: 'POST', 
     url: 'post.php', 
     data: { token: '123456', title: 'some title', url: 'http://somedomain.com', data: '' }, 
     success: function(data){ 
     alert (data) 
     } 
    });   

想知道我怎麼能「捕獲」了Ajax請求的不同錯誤: 爲如post.php中回報「令牌錯誤'當發佈無效標記時,或者標題丟失的'無效標題'。

在此先感謝

回答

1
// build the initial response object with no error specified 
$response = array(
    'error' => null 
); 

// the data checks went fine, process as normal 
if (data is ok) { 
    $response['some_object'] = value; 

// something is bad with the token 
} else if (bad token) { 
    $response['error'] = 'token error'; 

// something is bad with the title 
} else if (bad title) { 
    $response['error'] = 'bad title'; 

// some other error occured 
} else { 
    $response['error'] = 'unspecified error'; 
} 

// output, specifying that it's JSON data being returned 
header('Content-Type: application/json'); 
echo json_encode($response); 

和....

// $.ajax({ ... 
success: function(data){ 
    if (!data.error){ 
    alert('OK!'); 
    }else{ 
    alert('Error: '+data.error); 
    } 
} 
// }); 

類似的東西吧? (除非你說的是合法的AJAX錯誤,在這種情況下,提供error: function(x,t,e){} ajax選項或使用.ajaxError

+0

感謝隊友,作品像一個魅力! – greenbandit 2011-05-24 20:22:22

+0

@greenbandit:不是問題! ;-) – 2011-05-24 20:28:53

2

如果服務器發送別的東西比200狀態碼,您可以使用錯誤處理:

$.ajax({ 
    type: 'POST', 
    url: 'post.php', 
    data: { 
     token: '123456', 
     title: 'some title', 
     url: 'http://somedomain.com', 
     data: '' 
    }, 
    success: function(data){ 
     alert(data); 
    }, 
    error: function() { 
     alert('some error occurred'); 
    } 
}); 

如果您的服務器上執行的請求參數進行一些驗證,也許它可以返回包含錯誤信息的JSON對象(並設置適當的Content-Type: application/json):

{ error: 'some error message' } 

在這種情況下,你可以在處理這成功回調:

success: function(data) { 
    if (data.error != null && data.error != '') { 
     // TODO: the server returned an error message 
     alert(data.error); 
    } else { 
     // TODO: handle the success case as normally 
    } 
} 
0

我喜歡做的是爲$.ajax()設置dataType'json',然後在PHP頁面,您可以只回顯json_encode()ed關聯數組。這將使您可以通過功能參數data(即data.success,data.message)查看這些值。讓我知道你是否需要一些例子。