最近项目中遇到该问题,在此说明希望对需要的朋友有所帮助:
原则要统一请求和响应的数据格式。
以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+"\"}");
}