我想从AJAX函数读取一些JSON数据。这里是我使用AJAX:为什么我不能使用我的JSON数据?
$.ajax({
type: 'POST',
cache: false,
url: 'Default.aspx/GetCoords',
data: "{}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
var text = JSON.stringify(data);
$("#jsonData").html(text);
alert(text);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
我也有到位的字符串化使用JSON.parse和对象返回undefined或根本没有。这是来自一个C#的功能,看起来像这样:
[WebMethod]
[ScriptMethod]
public static string GetCoords()
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand("SELECT TOP 10 * FROM DRAW ORDER BY DrawID DESC;", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
System.Diagnostics.Debug.WriteLine(serializer.Serialize(rows));
return serializer.Serialize(rows);
}
}
}
它返回JSON数据:这里是什么样子的调试器控制台,当我调用该函数在一个段落标签:
[{"DrawID":925,"xCoord":466,"yCoord":201},{"DrawID":924,"xCoord":385,"yCoord":318},{"DrawID":923,"xCoord":768,"yCoord":159},{"DrawID":922,"xCoord":543,"yCoord":214},{"DrawID":921,"xCoord":329,"yCoord":172}]
然而,当我将其发送到段落标记在JQuery中或把它在一个HTML段落,这里是什么样子:
{"d":"[{\"DrawID\":925,\"xCoord\":466,\"yCoord\":201},{\"DrawID\":924,\"xCoord\":385,\"yCoord\":318},{\"DrawID\":923,\"xCoord\":768,\"yCoord\":159},{\"DrawID\":922,\"xCoord\":543,\"yCoord\":214},{\"DrawID\":921,\"xCoord\":329,\"yCoord\":172}]"}
我有两个问题: (1)为什么我无法使用这些数据将xCoords和yCoords插入到画布中?我尝试了很多格式:(data.d [0] .xCoord,d [0] .xCoord,text.d [0] .xCoord,text [0] .xCoord等等)。 (2)上面的第二种格式是否会在试图提取用于在画布上绘画的数据时出现问题(这是我想知道的反斜杠)?
谢谢。
你为什么要返回字符串?如果你将返回行可以更容易。 – lujcon 2015-02-11 20:23:33
在您的文档准备好之前,您的Ajax调用可能会返回。确保你在$(document).ready(/ * here8 /)中调用了ajax函数,以确保你的'#jsonData'在你尝试显示它时可用。 – 2015-02-11 20:25:07
你可以给我一个例子@lujcon? – btalbot 2015-02-11 20:26:42