我有這樣的代碼:如何在HTTP響應失敗時從JSON響應中讀取屬性?
$.post(Routing.generate('parMarcaModelo'), {
"marcaId": currBranch,
"modeloId": currModel,
"marcaNombre": currBranchName,
"modeloNombre": currModelName
}, 'json').done(function (data, textStatus, jqXHR) {
// do something here
}).fail(function (jqXHR, textStatus, errorThrown) {
// Catch error from server and logs to console
var err = eval("(" + jqXHR.responseText + ")");
colose.log('Error', err.Message, 20000);
return false;
});
服務器端返回一個JSON像這樣的:
{
"success":false,
"error":"El par Marca2-Modelo1 ya existe. Por favor escoja otra combinaci\u00f3n.",
}
但也返回一個400碼這樣的Ajax調用會經過.fail()
回調insted的的.done()
。掌握了這些信息後,我如何才能從.fail()
中的JSON中捕獲error
密鑰以向用戶展示?
我發現這個代碼:
$.get('http://localhost/api').then(function(res) {
var filter $.Deferred()
if (res.success) {
filter.resolve(res.data)
} else {
filter.reject(res.error)
}
return filter.promise()
}).done(function(data) {
console.log('Name:', data.name) // Outputs: Foo
}).fail(function(error) {
console.log('Error:', error) // Outputs: Something bad happened.
})
在this話題在SO,但不知道是否是正確的,如果也將影響好歹我的代碼。
任何幫助或建議?
如果你得到JSON,你在完成()方法 – 2014-12-03 17:31:00
如果消息在'err.error',你爲什麼要訪問'err.Message'而不是?你爲什麼使用'eval()'來解析你的JSON? – 2014-12-03 17:34:32
...你是什麼意思的「抓住」錯誤鍵?你是在拋出一個錯誤,還是這只是一個不幸的用法,'catch'這個詞有非常具體的含義? – 2014-12-03 17:36:48