Зачем мне нужно использовать .d для доступа к данным, возвращаемым jQuery AJAX?
Я собрал некоторый код jQuery AJAX, используя некоторые обучающие программы, которые я нашел в Интернете. Я новичок в jQuery и хочу узнать, как делать что-то лучше. У меня есть коллега, который собрал красивое веб-приложение, используя много jQuery.
То, что мне больше всего смущает, это: зачем нужно использовать ".d", когда ссылаетесь на ответ моего веб-метода и на что он стоит?
// ASP.net C# code
[System.Web.Services.WebMethod]
public static string hello()
{
return ("howdy");
}
// Javascript code
function testMethod() {
$.ajax({
type: "POST",
url: "ViewNamesAndNumbers.aspx/hello",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg); // This doesn't display the response.
alert(msg.d); // This displays the response.
} // end success:
}) // end $.ajax
Ответы
Ответ 1
Он был добавлен в ASP.NET ASP.NET 3.5s версии ASP.NET AJAX, чтобы вы не были уязвимы для этого эксплойта: http://haacked.com/archive/2009/06/25/json-hijacking.aspx
(Ответ получен из http://encosia.com/2009/06/29/never-worry-about-asp-net-ajaxs-d-again/)
Ответ 2
Microsoft делает это, чтобы защитить вас от эксплойта безопасности. Для получения дополнительной информации см. Нижнюю часть Эта страница.
Ответ 3
Я думаю, alert(msg)
отображает "[object Object]"?
Если это так, потому что объект, который разбирается через window.JSON
(который происходит под капотом при указании json
как dataType), действительно выглядит:
object = {
d: "some data"
}
Проверьте, что вы генерируете в ViewNamesAndNumbers.aspx/hello