如何在ashx中阅读JSONP

时间:2012-01-15 00:26:51

标签: c# json mootools ashx

我正在尝试为表单提交处理JSONP请求服务器端,即

var myJSONP = new Request.JSONP({
        url: 'http://mysite.../handlers/FormHandler.ashx',
        callbackKey: 'jsoncallback',
        data: {
            partTag: 'mtvo',
            iod: 'hlPrice',
            viewType: 'json',
            results: '100',
            query: 'ipod'
        },
        onRequest: function(url){
            // etc
        },
        onComplete: function(data){
            // etc
        }
    }).send();


 public class FormHandler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        string json = ??
        JObject j = JObject.Parse(json);


        context.Response.ContentType = "text/json";
        context.Response.Write("Hello World");
    }

我不确定如何在ashx中反序列化。我使用Json.Net,但如何从上下文中获取 我是否必须使用context.Request单独检索值,还是可以直接从上下文中解码?

感谢

2 个答案:

答案 0 :(得分:0)

我不确定您使用的是哪个JSONP,但使用MooTools Request.JSON,数据会在context.Request.Form中传递:

?context.Request.Form.ToString()
"partTag=mtvo&iod=hlPrice&viewType=json&results=100&query=ipod"

因此,您可以访问代码中的每个表单元素:

?context.Request.Form["partTag"]
"mtvo"

基于此,我相信您必须使用表单元素自己组装对象。

答案 1 :(得分:0)

要回答您的问题,是的,您需要使用Context.Request从客户端读取数据。

顺便说一句。如果您可以使用RESTful Web服务而不是实现自己的http处理程序,那么JSON序列化和反序列化的RESTful Web服务将由WCF框架处理。