Dot-Net

從 JSON 網路服務返回 HTML - 什麼是“.d”?

  • October 16, 2020

這是我不得不拿起並使用新技術而沒有時間學習基礎的情況之一!

我有以下呼叫 PrintService 的 js 函式,它返回要注入 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);

在我注意到另一個例子中的“.d”之前,我一直在努力解決這個問題

所以,它有效——但為什麼呢?這是什麼“.d”?

抱歉,如果這是一個菜鳥問題,但Google在這裡不是我的朋友。

謝謝

編輯:Magnar 是對的,它是 .NET 特定的東西。在這裡查看 Rick Strahl - http://www.west-wind.com/weblog/posts/164419.aspx

讓我感到困惑的是,它必須返回 JSON,因為我的客戶端腳本程式碼對返回非常滿意,但是當我訪問瀏覽器時,我得到 XML…?

PrintService 以 JSON 響應,這是一種基於 JavaScript Object Notation 的數據傳輸格式。所以數據參數是一個對象,而不是 HTML 字元串。該對像似乎有一個名為 的成員d,其中包含 HTML。

如果您直接訪問 URL http://localhost/PrintService/PrintService.asmx/RenderPrintDialog,您應該會看到以下內容:

{
   d: "<html here>"
}

可能還有其他成員。

花括號表示一個對象,裡面是鍵:用逗號分隔的值對。您可以在json.org閱讀有關 json 的更多資訊。

呼叫它的確切原因d是您必須與 PrintService 的作者討論的問題。;-) 也許markup或者html會是一個更有幫助的名字。

編輯

事實證明,Duncan 是 PrintService 的作者,他自己並沒有包含“d”。此外,在訪問 URL 時,他看到的是 XML,而不是 JSON。當在 http 請求中請求 JSON 時,正在使用的 Web 服務的 .NET 框架會以 JSON 響應。該框架添加了臭名昭著的d成員作為包裝器,以防止跨站點腳本。

本文解釋了整個交易:ASP.NET AJAX 版本之間的重大變化

引用自:https://stackoverflow.com/questions/739859