0

カスタム アプリケーションから Web ページに json メッセージを送信しようとしています。json メッセージが返され、有効に見えますが、success 関数がトリガーされません。現在、jquery-1.4.4.js を使用しています。以前は、jquery.com でホストされている jquery-latest.js を使用していました。そのバージョンを使用すると「parseerror」のエラーが発生しましたが、1.4.4 では成功または失敗を受け取りません。

私のコードは次のとおりです。

Web ページで:

<script>
$(document).ready(function () {
    $.ajax({url: "http://localhost:8080/callback=?",

            dataType: "json",
            success: function(data) 
            {
                alert("reply received");
            },
            error: function(data, error) 
            {
                alert("error: " + error);
            }
        });
});
</script>

返された json メッセージ (Chrome のネットワーク パネルで表示)

[{"name":"John"},{"name":"Mike"}]

私の C# アプリケーションでは、コードは次のとおりです。

string response = "[{\"name\":\"John\"},{\"name\":\"Mike\"}]";

request.ContentType = "application/json";
webserver.SendToBrowser(response, request);

と ..

public void SendToBrowser(string data, Classes.HTTPRequest request)
    {
        int numBytes = 0;
        byte[] bData = Encoding.ASCII.GetBytes(data); 
        try
        {
            string header = "";
            header += "HTTP/1.1 200 OK\r\n";
            header += "Server: MyServer\r\n";
            header += "Content-Length: " + bData.Length.ToString() + "\r\n";
            header += "Content-Language: en\n\r";
            header += "Content-Type: " + request.ContentType + "\r\n";
            header += "Connection: close\r\n\r\n";

            Byte[] headerBytes = Encoding.ASCII.GetBytes(header);

            if (request.Socket.Connected)
            {

                request.Socket.Send(headerBytes, headerBytes.Length, 0);

                if ((numBytes = request.Socket.Send(bData, bData.Length, 0)) == -1)
                    Console.WriteLine("Socket Error cannot Send Packet");
                else
                {
                    Console.WriteLine("No. of bytes sent {0}", numBytes);
                }
            }
            else
                Console.WriteLine("Connection Dropped....");
        }
        catch (Exception  e)
        {
            Console.WriteLine("Error Occurred : {0} ", e );
        }
        request.Socket.Close();
    }

どんな助けでも大歓迎です!

4

1 に答える 1

0

JSONP は魔法ではありません。

サーバーは JSONP プロトコルに従い、callback=パラメーターを読み取る必要があります。

于 2012-07-05T15:43:13.437 に答える