我的应用程序向服务器发出ajax POST,如果服务器验证失败,服务器会将string
或Dictionary<string, object>
返回给客户端。
因此,如果服务器正在发送Dictionary
,那么jQuery正在接收类似
responseText
"{\"Key1\":[\"Error Message 1\"],\"Key2\":[\"Error message 2\"]}"
我在客户端也有相应的responseJSON
。
$.ajax({
cache: false,
type: 'POST',
url: url,
data: data
})
.fail(function (response, textStatus, errorThrown) {
if (response.status === '400') {
if ($.isArray(response.responseJSON)) {
$.each(response.responseJSON, function (index, value) {
//do something
})
}
else if ($.type(response.responseJSON) === 'string') {
// do something
}
}
}
当响应是字典时,.isArray
方法返回false。我如何确定responseJSON是Dictionary
以及如何循环?
注意
服务器正在发回的object
答案 0 :(得分:0)
您尝试解释响应并查看它是否最终成为对象(或&#34; Dictionary&#34;)。如果响应看起来是JSON,并且它的结果也是一个对象(&#34; Dictionary&#34;),那么你知道该字符串是一个对象(&#34; Dictionary&#34;)。
下面的代码应概述所有必要的技巧,以便将其集成到您自己的代码中。
var thatResponseJson = "{\"Key1\":[\"Error Message 1\"],\"Key2\":[\"Error message 2\"]}";
try {
var result = JSON.parse(thatResponseJson);
if (result instanceof Array) {
// An Array
} else if (typeof result === 'object' && thatResponseJson[0] === '{') {
// Usually an object
} else if (typeof result === 'string') {
// A string
} else {
// Neither an Array, some other kind of object, or a string
}
} catch (err) {
// Not valid JSON
}