从JSON webservice返回HTML - 什么是".d"?

Dun*_*can 8 .net javascript json web-services

这是我必须在没有时间学习基础的情况下接受新技术运行的情况之一!

我有以下js函数调用PrintService,它返回我注入div的HTML:

        function showPrintDialog() {

        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: "{}",
            dataType: "json",
            url: "http://localhost/PrintService/PrintService.asmx/RenderPrintDialog",

            success: function(data) {
                $("#printdialoginner").html(data.d);
Run Code Online (Sandbox Code Playgroud)

在我注意到另一个例子中的".d"之前,我一直在努力解决这个问题

所以,它有效 - 但为什么呢?这是什么".d"?

抱歉,如果这是一个菜鸟问题,但谷歌不是我的朋友.

谢谢

编辑:Magnar是对的,它是.NET特定的东西.在这里查看Rick Strahl - http://www.west-wind.com/weblog/posts/164419.aspx

令我困惑的是,它必须返回JSON,因为我的客户端脚本代码对返回非常满意,但是当我访问浏览器时,我得到了XML ...?

Mag*_*nar 14

PrintService使用JSON进行响应,JSON是一种基于JavaScript Object Notation的数据传输格式.所以data-parameter是一个对象,而不是HTML字符串.这个对象似乎有一个名为的成员d,包含HTML.

如果您直接访问该网址http://localhost/PrintService/PrintService.asmx/RenderPrintDialog,则应看到以下内容:

{
    d: "<html here>"
}
Run Code Online (Sandbox Code Playgroud)

可能还有其他成员.

花括号表示对象,内部是键:由逗号分隔的值对.你可以在json.org上阅读更多关于json的内容.

究竟为什么它被称为d是你必须要与PrintService的作者一起讨论的.;-)可能markuphtml将是一个更有用的名称.

编辑

事实证明,Duncan是PrintService的作者,并没有自己包含'd'.此外,访问URL时,他看到的是XML,而不是JSON.当在http请求中询问时,正在使用的Web服务的.NET框架会响应JSON.臭名昭着的d成员被该框架添加为包装器,以防止跨站点脚本.

本文解释了整个交易:ASP.NET AJAX版本之间的重大变化


Khb*_*Khb 5

由于跨站点脚本攻击,ASP.Net将JSON数据嵌套在d属性中。

可以将脚本代码作为JSON响应返回,并且将数据嵌套在.d属性内会使浏览器无法解析。

参见此处: JSON漏洞

关于K