我正在使用$ .get执行ajax请求,因此我可以获得一个简单的字符串或JSON,如何知道结果是否是JSON(对象)?
修改
我可以返回一个字符串并以某种方式将其转换为object / JSON吗?
答案 0 :(得分:5)
它不是100%,但服务器可能设置了响应标头:Content-Type: application/json
。所以你可以尝试检查它:
$.ajax({
url: 'url',
success: function(data, textStatus, xhr){
var spoiler = xhr.getResponseHeader('Content-Type');
spoiler == 'application/json' ? alert('JSON received') : alert('Not JSON received');
}
});
当然,只有当您的服务器以正确的方式设置其标头时,它才有效。
还有一种方法 - 尝试创建一个函数并捕获您可能遇到的错误。
try {
x = ( new Function('return ' + received_data) )();
}
catch (e) {
console.log('Its not a JSON data... or its invalid.');
}
答案 1 :(得分:3)
使用typeof
方法确定它是对象还是字符串。如果要将String转换为JSON对象,并且如果您信任源,则可以使用eval
。否则使用JSON解析器,例如http://www.json.org/json_parse.js
答案 2 :(得分:3)
通常您会想知道数据类型是什么,但如果由于某种原因您不知道,请查看“Content-Type”标题。理论上它应该是'application / json':
function responseHandler() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
if(http_request.getResponseHeader("Content-Type") == 'application/json') {
// JSON
}
else {
// Not JSON
}
}
}
}
当然,您必须检查服务器是否正确设置了Content-Type标头。此外,不确定这是否适用于IE-可能不会。
答案 3 :(得分:2)
您可以使用getJSON()代替
http://api.jquery.com/jQuery.getJSON/
编辑:
您可以使用
$.ajax({
type: 'get',
cache: false,
url: service,
error: function(XMLHttpRequest, textStatus, errorThrown){
failureFunction(XMLHttpRequest, textStatus, errorThrown);
},
success: function(data){
successFunction(data);
},
dataType: 'text'
});
使用dataType Text,并从那里解析JSON。
jQuery.parseJSON(json) - http://api.jquery.com/jQuery.parseJSON/
答案 4 :(得分:0)
你应该知道。每个网址只应返回一种类型的数据。
答案 5 :(得分:0)
您知道数据的来源,您可以进行空检查
喜欢
如果是构造json的字符串,请执行结果的Eval
IF(EmployeeDetails.SalaryDetails.lenght)
{
forloop()
}