Javascript Jquery:JSON解析总是得到意外的字符错误
我正在尝试解析来自服务器的数据。虽然我正在处理一个有效的JSON,但我总是得到Javascript Jquery:JSON解析总是得到意外的字符错误,javascript,jquery,Javascript,Jquery,我正在尝试解析来自服务器的数据。虽然我正在处理一个有效的JSON,但我总是得到JSON意外字符错误 请考虑此代码: var shows = $.parseJSON(fetchData('contentShows', this.id)); // Returns a valid JSON data $.each(shows, function(index, value) { console.log(value.id); }); fetchData = function(dataReque
JSON意外字符错误
请考虑此代码:
var shows = $.parseJSON(fetchData('contentShows', this.id)); // Returns a valid JSON data
$.each(shows, function(index, value) {
console.log(value.id);
});
fetchData = function(dataRequest, id) {
var data = $.ajax({
url: '/shows.php',
type: 'GET',
dataType: 'json',
success: function(data) {
console.log(dataRequest);
console.log(data);
}
});
return data;
}
这是示例JSON:
[
{"shows":[],"spool":"/home","name":"Test Name","id":2}
]
问题在于
fetchData
函数不返回JSON文本,而是返回一个。(因此,当您将其传递到$.parseJSON
中时,它会转换为类似[object object]
的字符串,这当然是无效的JSON。)
原因是您将data
变量设置为$.ajax
调用的结果并返回它。的返回值是一个jqXHR
对象
但是仅仅改变这一点是不够的,因为调用是异步的;它在函数返回后完成
最好的方法是修改fetchData
以接受回调,然后在回调中使用获取的数据。大概是这样的:
fetchData = function(dataRequest, id, callback) {
$.ajax({
url: '/shows.php',
type: 'GET',
dataType: 'json',
success: function(data) {
console.log(dataRequest);
console.log(data);
callback(data);
}
});
}
fetchData('contentShows', this.id, function(showData) {
var shows = $.parseJSON(showData);
$.each(shows, function(index, value) {
console.log(value.id);
});
});
这样使用:
fetchData = function(dataRequest, id, callback) {
$.ajax({
url: '/shows.php',
type: 'GET',
dataType: 'json',
success: function(data) {
console.log(dataRequest);
console.log(data);
callback(data);
}
});
}
fetchData('contentShows', this.id, function(showData) {
var shows = $.parseJSON(showData);
$.each(shows, function(index, value) {
console.log(value.id);
});
});
问题在于
fetchData
函数不返回JSON文本,而是返回一个。(因此,当您将其传递到$.parseJSON
中时,它会转换为类似[object object]
的字符串,这当然是无效的JSON。)
原因是您将data
变量设置为$.ajax
调用的结果并返回它。的返回值是一个jqXHR
对象
但是仅仅改变这一点是不够的,因为调用是异步的;它在函数返回后完成
最好的方法是修改fetchData
以接受回调,然后在回调中使用获取的数据。大概是这样的:
fetchData = function(dataRequest, id, callback) {
$.ajax({
url: '/shows.php',
type: 'GET',
dataType: 'json',
success: function(data) {
console.log(dataRequest);
console.log(data);
callback(data);
}
});
}
fetchData('contentShows', this.id, function(showData) {
var shows = $.parseJSON(showData);
$.each(shows, function(index, value) {
console.log(value.id);
});
});
这样使用:
fetchData = function(dataRequest, id, callback) {
$.ajax({
url: '/shows.php',
type: 'GET',
dataType: 'json',
success: function(data) {
console.log(dataRequest);
console.log(data);
callback(data);
}
});
}
fetchData('contentShows', this.id, function(showData) {
var shows = $.parseJSON(showData);
$.each(shows, function(index, value) {
console.log(value.id);
});
});
引用的JSON很好,这表明
fetchData
没有返回引用的内容。fetchData
看起来像什么?例如,它可能是异步的吗?导致这种情况的一个常见原因是获取的数据中有null或其他特殊字符。@T.J.在那里,包含了fetchData函数。引用的JSON很好,这表明fetchData
没有返回引用的内容。fetchData
看起来像什么?例如,它可能是异步的吗?导致这种情况的一个常见原因是提取的数据中有null或其他特殊字符。@T.J.在这里,包含了fetchData函数。