Я пытаюсь прочитать некоторые данные JSON из функции AJAX. Вот 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 вместо stringify и объекты возвращают неопределенное значение или нет вообще. Это происходит из 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, текст [0] .xCoord и т. Д.). (2) Является ли второй формат выше проблемой, пытаясь извлечь эти данные для рисования на холсте (это то, что мне интересно)?
Спасибо.
Почему вы возвращаете строку? Может быть проще, если вы вернете строки. – lujcon
Возможно, ваш вызов Ajax возвращается до того, как ваш документ будет готов. убедитесь, что вы вызываете эту функцию ajax внутри '' $ (document) .ready (/ * here8 /); '', чтобы ваш '' # jsonData'' был доступен, когда вы пытаетесь его отобразить. –
Можете ли вы привести мне пример @lujcon? – btalbot