3

通知を処理してポーリング クライアントに送信する asp.net ハンドラーのクライアントを作成しています。通知を待って、10秒ごとにjqueryでajax呼び出しを行います。問題は、クライアントに応答を返すたびに、常にエラー コールバックが呼び出されることです。フィドラーを使用すると、json 応答がステータス 200 でクライアントに到着することがわかりますが、firebug では要求が待機し続けます。

クライアント:

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({ 
        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 に答える
0

あなたのajax呼び出しには次のものが欠けていると思います:

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