3

我正在为处理并向轮询客户端发送通知的 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);
4

4 回答 4

1

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

于 2012-10-05T13:22:55.530 回答
0

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

    dataType: 'json',
    contentType: "application/json; charset=uft-8",
于 2012-10-05T10:03:21.373 回答
0

试试这个:

$.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 });
}
于 2012-10-05T10:04:25.740 回答
0

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

data: { userName: "ggyimesi" }

我认为你应该这样做

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

你可以添加更多这样的

 type: "POST",
 url: "NotificationChecker.ashx",
 contentType: "application/json; charset=utf-8",
 dataType: 'json',
于 2012-10-05T10:36:22.473 回答