【问题标题】:JQuery ajax call to ASP.NET handler always returns error对 ASP.NET 处理程序的 JQuery ajax 调用总是返回错误
【发布时间】:2012-10-05 09:48:20
【问题描述】:

我正在为 asp.net 处理程序编写一个客户端,该处理程序处理并向轮询客户端发送通知。我每 10 秒使用 jquery 进行 ajax 调用,等待通知。问题是每次我将响应发送回客户端时,它总是调用错误回调。使用提琴手,我看到 json 响应以状态 200 到达客户端,但在萤火虫中,请求一直在等待。

客户:

function poll(){

$.ajax({ 
        url: "http://localhost:53914/NotificationChecker.ashx",      
        data: { userName: "ggyimesi" },
        type: 'POST',
        success: function(data){
            alert("asd");
            $('div#mydiv').text(data.Text);
            },
        complete: poll, 
        error: function(data){alert(data.status);},
        timeout: 15000 });
}

 $(document).ready(function(){
  poll();}
  );

服务器:

Response response = new Response();
response.Text = this.MessageText;
response.User = Result.AsyncState.ToString();
string json = JsonHelper.JsonSerializer<Response>(response);
Result.Context.Response.ContentType = "application/json";
Result.Context.Response.Write(json);

【问题讨论】:

  • 尝试使用相对 URL,以防浏览器认为这里发生了某种 XSS:url: "/NotificationChecker.ashx",

标签: c# jquery asp.net ajax


【解决方案1】:

我确实发现了问题。问题是我从未托管在 Web 服务器上的本地计算机启动客户端 html,这导致了问题。将其添加到本地 Web 服务器后,原始代码照原样运行。

【讨论】:

    【解决方案2】:

    我认为您的 ajax 调用缺少以下内容:

        dataType: 'json',
        contentType: "application/json; charset=uft-8",
    

    【讨论】:

    • 在这种情况下,我如何检索已发布的参数?因为唯一改变的是在服务器端我无法检索 Request["userName"] 参数。
    【解决方案3】:

    试试这个:

    $.ajax({ 
            url: "/NotificationChecker.ashx",
            dataType: 'json',
            contentType: "application/json; charset=uft-8",      
            data: { userName: "ggyimesi" },
            type: 'POST',
            success: function(data){
                alert("asd");
                $('div#mydiv').text(data.Text);
                },
            complete: poll, 
            error: function(data){alert(data.status);},
            timeout: 15000 });
    }
    

    【讨论】:

      【解决方案4】:

      我认为你的问题是你像这样传递你的用户名

      data: { userName: "ggyimesi" }
      

      我认为你应该这样做

      data: '{userName:"' + ggyimesi + '"}'
      

      你可以添加更多这样的

       type: "POST",
       url: "NotificationChecker.ashx",
       contentType: "application/json; charset=utf-8",
       dataType: 'json',
      

      【讨论】:

      • 这种情况下,我似乎在 asp.net 端找不到任何传递的参数。请求参数和输入流为空。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 2016-01-07
      • 2013-07-06
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      相关资源
      最近更新 更多