[英]Printing json with C# asp.net
好了,所以我有一些jQuery代碼,它們會將AJAX請求發送到aspx文件。
我的Spellchecker.aspx文件如下所示:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Spellchecker.aspx.cs" Inherits="Spellchecker" %>
<head id="Head1" runat="server" />
我必須放置這個“ head”標簽,否則我將在web.config文件(該網站的其他頁面需要該文件)中收到有關“ <頁面主題”的錯誤。 這意味着來自服務器的響應采用以下形式:<JSON HERE> <head ... />這是錯誤的,因為代碼應僅返回json數據。
在aspx.cs文件中,我將在Page_Load中返回字典轉換為json的內容:
dict.Add("just_json", json_obj);
JavaScriptSerializer serializer = new JavaScriptSerializer(); //creating serializer instance of JavaScriptSerializer class
string json = serializer.Serialize((object)dict);
Response.Write(json);
}
因此,在警報框中,我看到json數據,后跟<head id =“ Head1”> <link href ...“樣式表等。
我該如何做,以便僅從aspx返回JSON數據?
更新:我想我明白了。 將Theme =“ =”放在aspx文件的“%Page”標記中似乎禁用了主題!
回答您的實際問題“我為什么需要head元素”-因為這是ASP.NET將您的CSS鏈接和一些JavaScript導入放入其中的地方。
目前尚不清楚您要在此處執行的操作,但您似乎想創建一個Web服務或將一個方法公開為ScriptMethod。 使用ASPX頁面來輸出對AJAX請求的響應是很奇怪的。
查看ScriptMethods或HttpHandlers 。
HttpHandlers允許您完全管理響應。 因此,您將創建一個處理程序並將其掛接到“ SpellChecker.ashx”,該處理程序可以直接寫入響應流。
public class SpellCheckerHttpHandler : IHttpHandler
{
public bool IsReusable { get { return true; } }
public void ProcessRequest(HttpContext context)
{
//Write out the JSON you want to return.
string json = GetTheJson();
context.Response.ContentType = "application/json";
context.Response.Write(json);
}
}
然后,在system.webServer元素內的Web.Config中,添加:
<handlers>
<add name="SpellChecker" path="~/SpellChecker.ashx" type="MyNamespace.HttpHandlers.SpellCheckerHttpHandler, MyAssembly" />
</handlers>
現在,您可以向處理程序發出請求,例如http://localhost/SpellChecker.ashx?TextToCheck=xyz
。
如果您的頁面正在處理輸入和輸出JSON,請考慮使用以ashx結尾的“通用處理程序”頁面而不是以asmx結尾的“ Web頁面”。 它的開銷要少得多,並且不會嘗試加載主題等。
您可以通過控制輸出的Content-Type來輸出JSON而不是XML或其他內容:
context.Response.ContentType = "application/json";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.