也許,它對你來說沒有那麼大的問題。但我第一次嘗試json序列化。並閱讀stackowerflow中的其他文章。JavaScriptSerializer()。Serialize(實體框架對象)
我已經創建了實體框架數據模型。 然後通過方法從對象獲取的所有數據:
private uqsEntities _db = new uqsEntities();
//get all data from table sysMainTableColumns where tableName=paramtableName
public List<sysMainTableColumns> getDataAboutMainTable(string tableName)
{
return (from column in _db.sysMainTableColumns
where column.TableName==tableName
select column).ToList();
}
我的web服務:
public string getDataAboutMainTable()
{
penta.DAC.Tables dictTable = new penta.DAC.Tables();
var result = dictTable.getDataAboutMainTable("1");
return new JavaScriptSerializer().Serialize(result);
}
和jQuery AJAX方法
$('#loadData').click(function() {
$.ajax({
type: "POST",
url: "WS/ConstructorWS.asmx/getDataAboutMainTable",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("#jsonResponse").html(msg);
var data = eval("(" + msg + ")");
//do something with data
},
error: function(msg) {
}
});
});
失敗(從fairbug):
missing ] after element list [Break on this error] var data = eval("(" + msg + ")");
Ajax響應(由螢火蟲如果刪除var data = eval("(" + msg + ")")
):
{"d":"[{\"ID\":1,\"TableName\":\"1\",\"Name\":\"d\",\"FullName\":\"f\",\"Type\":\"nvarchar(50)\",\"MeasurementUnit\":\"t \",\"EntityState\":2,\"EntityKey\":{\"EntitySetName\":\"sysMainTableColumns\",\"EntityContainerName\":\"uqsEntities\",\"EntityKeyValues\":[{\"Key\":\"ID\",\"Value\":1}],\"IsTemporary\":false}},{\"ID\":2,\"TableName\":\"1\",\"Name\":\"e\",\"FullName\":\"e\",\"Type\":\"int\",\"MeasurementUnit\":\"r \",\"EntityState\":2,\"EntityKey\":{\"EntitySetName\":\"sysMainTableColumns\",\"EntityContainerName\":\"uqsEntities\",\"EntityKeyValues\":[{\"Key\":\"ID\",\"Value\":2}],\"IsTemporary\":false}}]"}
問題數據,代碼失敗那裏。並且我認爲我沒有使用JavaScriptSerializer()。Serialize()方法很好。
請告訴我,我在C#代碼中犯了什麼大錯誤?
失敗?失敗如何?順便說一句,'eval'是不必要的。 – 2010-03-15 19:50:01
@ Craig-Stuntz:我想現在我的問題現在已經形成。可能是不必要的評估。但爲什麼ajax Responce包含像「:\」這樣的標籤? – loviji 2010-03-15 20:03:15
在我看來像逃避引號。順便說一句,直接序列化實體是一個壞主意,因爲如果恰好包含循環引用,JavaScriptSerializer將會死亡。 – 2010-03-15 20:12:55