Зачем мне нужно использовать .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

Ответ 2

Microsoft делает это, чтобы защитить вас от эксплойта безопасности. Для получения дополнительной информации см. Нижнюю часть Эта страница.

Ответ 3

Я думаю, alert(msg) отображает "[object Object]"?

Если это так, потому что объект, который разбирается через window.JSON (который происходит под капотом при указании json как dataType), действительно выглядит:

object = {
    d:   "some data"
}

Проверьте, что вы генерируете в ViewNamesAndNumbers.aspx/hello