无法将收到的jsonp数据转换为jquery中datatable的源
我的jquery使用jsonp从服务器获取json数据。 接收到的数据如下所示无法将收到的jsonp数据转换为jquery中datatable的源,jquery,json,datatables,jsonp,Jquery,Json,Datatables,Jsonp,我的jquery使用jsonp从服务器获取json数据。 接收到的数据如下所示 "d":"[{"id":28,"first_name":"Examiner","last_name":"Exam","phone_no":"9876543210","email":"examiner@gmail.com","address":"Nashik","username":"examiner","password":"examiner","user_type":"examiner ","active":tru
"d":"[{"id":28,"first_name":"Examiner","last_name":"Exam","phone_no":"9876543210","email":"examiner@gmail.com","address":"Nashik","username":"examiner","password":"examiner","user_type":"examiner ","active":true},{"id":5,"first_name":"Jeevan","last_name":"Jadhav","phone_no":"9876543210","email":"jeevan@gmail.com","address":"nashik","username":"jeevan","password":"jeevan","user_type":"examiner ","active":true},{"id":40,"first_name":"Niraj","last_name":"Borwal","phone_no":"3453453450","email":"niraj@pointmatrix.com","address":"Nashik","username":"niraj","password":"niraj","user_type":"examiner ","active":true},{"id":26,"first_name":"sumit","last_name":"mogare","phone_no":"8675456876","email":"sumit1@gmail.com","address":"Nashik","username":"sumit","password":"mogare","user_type":"examiner ","active":true},{"id":53,"first_name":"aaa","last_name":"aaa","phone_no":"1234567890","email":"aaa@gmail.com","address":"aaa","username":"aaa","password":"aaa","user_type":"examiner ","active":true}]"
我需要将这些数据转换为适合添加到datatable的数据。但是当我使用$.parseJSON(response)
jquery会给出错误。我认为这些数据是一串对象。
如何将此数据转换为json,以便将其用作datatable的“aaData”源。
我的jquery代码如下
$('#btnClick').on("click", function () {
debugger;
var dt = 'type=' + $('#txt').val();
$.ajax({
dataType: "jsonp",
url: "http://localhost:6168/WcfService.svc/getData",
type: "POST",
jsonpCallback: "callback",
data: dt,
contentType: "application/json; charset=utf-8",
success: function (response) {
debugger;
fillTable(response);
console.log(response);
// var parsed = JSON.parse(response);
var dat = response;
var data = dat.split(':');
console.log(data);
// var parsed = $.parseJSON('[' + response + ']');
// var dt = $.parseJSON(parsed);
//console.log(parsed);
$('#text').text("you entered : " + response);
},
error: function () {
alert("error");
}
});
return false;
});
function fillTable(resp) {
$('[id*="mytable"]').DataTable({
"aaData": resp,
"aoColumns": [
{ "d": "id" },
{ "d": "first_name" },
{ "d": "last_name" },
{ "d": "phone_no" },
{ "d": "email" },
{ "d": "address" },
{ "d": "username" },
{ "d": "password" },
{ "d": "user_type" },
{ "d": "isActive" },
]
});
}
而fillTable函数如下所示
$('#btnClick').on("click", function () {
debugger;
var dt = 'type=' + $('#txt').val();
$.ajax({
dataType: "jsonp",
url: "http://localhost:6168/WcfService.svc/getData",
type: "POST",
jsonpCallback: "callback",
data: dt,
contentType: "application/json; charset=utf-8",
success: function (response) {
debugger;
fillTable(response);
console.log(response);
// var parsed = JSON.parse(response);
var dat = response;
var data = dat.split(':');
console.log(data);
// var parsed = $.parseJSON('[' + response + ']');
// var dt = $.parseJSON(parsed);
//console.log(parsed);
$('#text').text("you entered : " + response);
},
error: function () {
alert("error");
}
});
return false;
});
function fillTable(resp) {
$('[id*="mytable"]').DataTable({
"aaData": resp,
"aoColumns": [
{ "d": "id" },
{ "d": "first_name" },
{ "d": "last_name" },
{ "d": "phone_no" },
{ "d": "email" },
{ "d": "address" },
{ "d": "username" },
{ "d": "password" },
{ "d": "user_type" },
{ "d": "isActive" },
]
});
}
提前感谢您确定要返回JSONP吗?这看起来更像JSON——尽管它是无效的——而且它们是不可互换的。看到这个错误也会有所帮助,我不确定它是jsonp还是json格式,这是我在使用Newtonsoft.json的JsonConvert.SerializeObject(dt)序列化System.Data.Datatable之后收到的;这个“JSON”绝对不可解析。解决这个问题的唯一方法是使用一些聪明的正则表达式删除破坏性的引号,然后将整个内容封装在{…}中并对其进行解析。我建议您更正后端以传递有效的、可解析的JSON。它看起来像是一个JSON对象被分配给属性
d
,然后整个批次作为JSON返回。或者别的什么。通过一些修改,它可以在客户端工作:@davidkonrad是的,我一定会尝试删除后端的破坏性报价。