JQuery.Ajax问题:如何移除.NET Web Service响应中的HTTP头
解决ASMX Web Service返回带HTTP头内容的问题
哈哈,这个坑我之前刚踩过!你想要从ASMX拿到纯纯的"hello"结果,但.NET默认会把Web方法的返回值包装成SOAP/JSON结构,甚至带上HTTP响应相关的内容,确实头疼。给你两个最直接的解决思路:
方法1:修改Web方法直接输出纯文本
把原来返回string的Web方法改成直接向响应流写内容,跳过.NET的自动包装机制:
[WebMethod] public void GetHello() { // 设置响应内容类型为纯文本 Context.Response.ContentType = "text/plain"; // 直接写入你要的内容 Context.Response.Write("hello"); // 结束响应,避免后续输出额外内容 Context.Response.End(); }
这样Web服务就只会输出"hello"这几个字符,不会带任何包装或者HTTP头信息。
方法2:调整前端Ajax请求配置(配合方法1使用)
确保jQuery Ajax知道要接收纯文本,不要自动解析成JSON或XML:
$.ajax({ url: "YourWebService.asmx/GetHello", type: "POST", // 用表单编码的 contentType,适配直接输出文本的Web方法 contentType: "application/x-www-form-urlencoded", // 明确告诉jQuery预期接收纯文本 dataType: "text", success: function(raw_data) { console.log(raw_data); // 这里就是你要的纯"hello"啦! }, error: function(xhr, status, err) { console.error("请求出错:", err); } });
避坑提醒
如果你之前给Web方法加了[ScriptMethod(ResponseFormat = ResponseFormat.Json)]特性,一定要去掉!这个特性会强制.NET把返回值包装成JSON结构(比如返回{"d":"hello"}),就拿不到纯文本了。
如果只是想从默认的JSON响应里提取值,那也可以在前端用raw_data.d拿到"hello",但显然你要的是纯文本输出,所以方法1+方法2是最直接的解决方案。
内容的提问来源于stack exchange,提问作者user819490
相关产品推荐
相关产品推荐

