我从c#背后的代码中成功获得了jSon的响应。在jQuery中将jSon转换为表时,它会抛出错误('无效字符')。这是我的代码:
$('#reports').click(function () {
var pageUrl = '<%= ResolveUrl("~/Admin.aspx/SystemstatusReport")%>';
$.ajax({
type: 'POST',
url: pageUrl,
contentType: 'application/json; charset=utf-8',
success: function (data) {
var response = $.parseJSON(data);
$(function () {
$.each(response, function (i, item) {
var $tr = $('<tr>').append(
$('<td>').text(item.SystemID),
$('<td>').text(item.SystemIP),
$('<td>').text(item.SystemStatus)
);
console.log($tr.wrap('<p>').html());
});
});
},
error: function (data, success, error) {
alert("Error:" + error);
}
});
});
我的 c#[WebMethod]
public static string SystemstatusReport()
{
using (OleDbConnection con=new OleDbConnection( conStr))
{
con.Open();
string query = "SELECT * FROM SystemStatus";
using (OleDbDataAdapter da=new OleDbDataAdapter( query,con))
{
DataSet ds=new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
var jsonString = DataTableToJson(dt);
return jsonString;
}
}
}
修改
我的json回复:
[{ "SystemId": 1753259, "IP": "1855652", "SystemStatus": "online" },{ "SystemId": 1753359, "IP": "1585652", "SystemStatus": "online" }]
答案 0 :(得分:0)
它应该是data.d
,如下所示:
var response = $.parseJSON(data.d);
因为C#=&gt; 3.5将所有JSON响应序列化为变量d。
您需要更改以下代码:
$(function () {
$.each(response, function (i, item) {
var $tr = $('<tr>').append(
$('<td>').text(item.SystemId),
$('<td>').text(item.IP),
$('<td>').text(item.SystemStatus)
);
console.log($tr.wrap('<p>').html());
});
});
您需要在Json响应中给出确切的名称。
答案 1 :(得分:0)
我使用JSON.parse方法获取json字符串。以下是我的代码
success: function (data) {
var sam = JSON.parse(data);
$(function () {
var trHTML = '';
for (var i = 0; i < sam.length; i++) {
trHTML += '<tr><td>' + sam[i].IP + '</td><td>' + sam[i].SystemID + '</td><td>' + sam[i].Bay + '</td></tr>';
}$('#records_table').append(trHTML);
});
});
而且我忘了提到JSON对象的索引。