JS通过Ajax访问C#中的.ashx文件,Ajax响应函数总是执行error响应函数

本文介绍了在项目中遇到的JS通过Ajax调用C# .ashx处理程序时,总是触发error响应的问题。关键在于统一请求和响应的数据格式,以JSON为例,展示了javascript代码和.CSHX文件的处理方法,强调了返回数据格式的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目中遇到该问题,在此说明希望对需要的朋友有所帮助:

原则要统一请求和响应的数据格式。

以json格式为例如下:

javascript代码部分:        

     function post_webservice_async_json(paramObj) {
                 //var returnStr = "";
                 //var defer = $.Deferred();
                 $.ajax({
                     type: 'post',
                     async: true,
                     dataType: 'json',
                     url: 'Pic.ashx',
                     traditional: true,
                     data: { paramInfo: JSON.stringify(paramObj) },//图片转成二进制长度很大,故采用Json格式进行处理。
                     success: function (data) {
                         alert("保存图层成功 URL: " + data.URL);
                         //defer.resolve(data);
                     },
                     error: function () {
                         alert("url 返回有误!");
                     }
                 })
                 //return defer.promise();
             }

 

Pic.ashx部分:

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/json";
        //context.Response.Write("Hello World");
        string URL="";
        string paramInfo = null;
        paramInfo = context.Request.Form["paramInfo"];

        //图片读取
        if (paramInfo != null && paramInfo != "")
        {
            JavaScriptSerializer aa = new JavaScriptSerializer();


            Dictionary<string, string> dic = aa.Deserialize<Dictionary<string, string>>(paramInfo);


            string obj = dic["oge"].Replace(" ", "+").Split(',')[1];


            byte[] array = Convert.FromBase64String(obj);//转成二进制数组


            string oper = dic["oper"];
            string picname = dic["picname"];

            ///返回的URL
            URL = SavePicFunc(array, picname);///一定要将返回串改成JSON格式
        }

        context.Response.Write("{\"URL\": \""+URL+"\"}");
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值