[英]JSON response received in AJAX success but not parsing
我在下面有以下AJAX函數。 問題是我在AJAX的成功函數中獲得了正確的響應標頭,但是當我解析響應時,卻得到了undefined
。
我收到的JSON數據如下所示:
[{"responseCode":1,"msg":"Successfully done!"}]
JS
// Renaming am item
filelist.on('click', '.btn-rename', function(){
var that = this; //Save the scope of the button that was clicked
var id = $(this).data('id');
var name = $(this).data('filename');
var jc = $.confirm({
theme: 'black',
type: 'dark',
typeAnimated: true,
title: 'Rename this file?',
icon: 'fa fa-pencil-square-o',
content: '<input id="newName" type="text" value="'+name+'"/><span id="response"></span>',
onOpen: function() {
var element = $('#newName');
element.focus();
element.select();
},
buttons: {
save: {
text: 'Rename',
btnClass: 'btn-dark',
action: function() {
this === jc;
var inputName = $('#newName').val();
if(inputName == '') {
$('#response').html('Please enter a new name..').addClass('responseAlert');
return false;
}
else
if(inputName == name) {
$('#response').html(' C'mon! Don't be silly..').addClass('responseWarning');
return false;
}
//Send request to update the name
$.ajax({
type:"POST",
url:"rename.php",
data: {
fileId: id,
newName: inputName
},
beforeSend: function() {
$('#response').html('<i class="fa fa-spinner fa-spin" aria-hidden="true"></i> Working on it...').addClass('responseProcessing');
},
success: function(data){
var obj = JSON.parse(data);
var status = obj.responseCode;
alert(obj.responseCode);
if(status == 1) {
jc.close();
$.alert({
theme: 'black',
icon: 'fa fa-check',
title: 'Success',
type: 'green',
typeAnimated: true,
content : response.msg
});
}
else {
$('#response').html(response.msg).addClass('responseAlert');
}
}
});
return false;
}
},
cancel: {
}
}
});
return false;
});
解析響應后,它將轉換為JSON Array,並將該對象索引為第一個元素。 請注意,括號[]
引起了這種情況。
var a = JSON.parse('[{"responseCode":1,"msg":"Successfully done!"}]');
console.log(a); // [Object]
console.log(a[0]); // {"responseCode":1,"msg":"Successfully done!"}
var a = JSON.parse('[{"responseCode":1,"msg":"Successfully done!"}]'); console.log(a); // [Object] console.log(a[0]); // {"responseCode":1,"msg":"Successfully done!"}
解析不帶括號的字符串會產生所需的對象
var a = JSON.parse('{"responseCode":1,"msg":"Successfully done!"}');
console.log(a); // {"responseCode":1,"msg":"Successfully done!"}
var a = JSON.parse('{"responseCode":1,"msg":"Successfully done!"}'); console.log(a); // {"responseCode":1,"msg":"Successfully done!"}
您需要從后端卸下那些支架。
如果指定dataType:“ text”,則將不會解析響應。 巡回期望的問題是您嘗試訪問數組的屬性:
var data = "[{"responseCode":1,"msg":"Successfully done!"}]"
var obj = JSON.parse(data)
// and then:
console.log(obj[0]. responseCode)
obj是一個數組! (或刪除e方剎車片!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.