如何在ashx中阅读JSONP

本文关键字:JSONP ashx | 更新日期: 2023-09-27 18:20:23

我正在尝试处理表单提交的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,但如何从上下文中获取我必须使用上下文吗。请求单独检索值,或者我可以直接从上下文中解码吗?

感谢

如何在ashx中阅读JSONP

我不确定您使用的是哪一个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"

基于此,我相信您将不得不使用form元素自己组装对象。

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

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