当前位置: 代码迷 >> ASP.NET >> Ajax请求ashx页面疑点
  详细解决方案

Ajax请求ashx页面疑点

热度:1184   发布时间:2013-02-25 00:00:00.0
Ajax请求ashx页面疑问
前台代码
HTML code
<head>    <script src="../JS/jquery-1.7.2.min.js" type="text/javascript"></script></head><body>    <script type="text/javascript">        $.ajax({            type: "POST",            url: "Demo.ashx",            dataType: "text",            async: true,            cache: false,            data: { name: 'test' },            success: function(data) {            },            error: function(XMLHttpRequest, textStatus, errorThrown) {                alert('当你狂刷新页面的时候就弹出来了');            }        });    </script></body></html>

后台代码
C# code
<%@ WebHandler Language="C#" Class="Demo" %>using System;using System.Web;public class Demo : IHttpHandler{    public void ProcessRequest(HttpContext context)    {        context.Response.ContentType = "text/plain";        context.Response.Write("1");    }    public bool IsReusable    {        get        {            return false;        }    }}


问题描述:我在用AJAX请求ASHX页面的时候请求有时候成功,有时候失败。同样的代码请求aspx页面或者asmx文件里面就不会出现这个问题。我想问下,这是ashx的一个bug吗?当错误出现的时候返回了12030状态码。当然去掉data属性或者把post修改为get等方式也是可以解决这个问题的。微软官网虽然有12030相关的资料,但是并没有给出解决的办法。难道是ashx本身的机制问题吗?求帮忙,谢谢!

------解决方案--------------------------------------------------------

JScript code
  data: { "val1": v1, "val2": v2 }, //注意!!!ASHX和WebService传data格式不同!!这是WS的 data: "{val1:'" + v1 + "',val2:'" + v2 + "'}",
------解决方案--------------------------------------------------------
我当时碰到的问题跟你一样 后来就是data传值写法不一样 你可以试试先
探讨

引用:
JScript code

data: { "val1": v1, "val2": v2 }, //注意!!!ASHX和WebService传data格式不同!!这是WS的 data: "{val1:'" + v1 + "',val2:'" + v2 + "'}",


引号问题 你试试

谢谢你的回答,不是引号问题。你可以测试下就可以看到效果了

------解决方案--------------------------------------------------------
如果不报异常的方案如下


方案一:
JScript code
POST  修改成 GET
------解决方案--------------------------------------------------------
探讨
方案1:我在问题的描述中已经提到了,你可以看下我的描述。
方案2:可能并没有从正面回答为什么的IHttpHandler接口会出现错误,因为问题是间断的出现

不过还是谢谢你.

------解决方案--------------------------------------------------------
如果单从异步方式来讲,肯定是不全面的,因为本身AJAX的提交可以修改同步,异步方式,而且再GET下是没有问题的

于是,我突然想到一个问题,在处理程序中没有接受Post过去的值,可能引发此问题
C# code
context.Response.ContentType = "text/plain";            string ss = context.Request.Params["name"];//接受一下提交值            context.Response.Write("1");
  相关解决方案