如何将.aspx的输出转换为JSON?

时间:2012-02-24 11:13:03

标签: c# .net ajax json parsing

我需要将.aspx页面的输出转换为JSON对象(由于JSONP Ajax请求)。

事实上这个页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="mypage.aspx.cs" Inherits="folder_mypage" %>

<div class="myClass">Hello</div>
使用jQuery,在ajax调用之后:

$.ajax({
    url: 'http://myownajax.projects.it/folder/mypage.aspx',
    dataType: 'jsonp',
    success: function(result) {
        console.log("it is ok");
    },

    error: function(jqXHR, textStatus, errorThrown) {
        console.log(textStatus + " - " + errorThrown);
    }                
});

我得parsererror - SyntaxError: class is a reserved identifier 这就是我需要将“页面输出”转换为JSON元素的原因。

我该怎么做?

修改 用更少的话来说:我想在一个元素,客户端附加一个.aspx上下文!请求是跨doman,这就是为什么我需要JSONP,结果需要JSON!所以,我正在寻找的只是这样:获取HTML(作为字符串)并放入一个JSON对象。与result.myHtmlString="<div class='myClass'>Hello</div>";

一样

2 个答案:

答案 0 :(得分:1)

你可以做这样的事情(没有经过测试,我自己从未使用它,但它显示了一般的要点和js-serializer)

class Result{
  public String Html{get;set;}
}

TextReader txtread = new TextReader("page.aspx");
string text = txtread.ReadToEnd();
var res = new Result(){Html=text};
JavaScriptSerializer serializer = new JavaScriptSerializer();
var json = serializer.Serialize(res);

不使用Serializer:

String html = new TextReader("page.aspx").ReadToEnd();
String json = "{ Html: '" + html + "'}";
return json;

json是一个字符串!

答案 1 :(得分:0)

您应该注意,您的结果页面不在JSON中,而在HTML中:

<div class="myClass">Hello</div>

在JSON中它会是这样的:

{
    "div": 
    { 
        myclass: "John"
    },
    ...
}

因此,您可以将逻辑移到代码隐藏处,或尝试查找一些渲染器 目前很难说你想做什么 - 通过JSON返回HTML?

<强>更新 如果要将HTML返回给客户端,只需将其包装如下:

{
    html: "YOUR RESULT HTML HERE"
}