事務屋さんの備忘録

主にプログラミングのことを書いていきます。メモというか備忘録的な感じで。プログラミングといっても、私はプロのエンジニアでも本職のプログラマーでもありません。単なる事務職をやってるサラリーマンで、空いた時間にちょこちょこっとプログラミングしてる程度です。よってこのブログに記載したことが誤っていたり、もっとよい方法がある場合もあると思います。その場合には、ご指摘いただけると嬉しいです。また、このブログを読んで役に立った、なんて方がいらっしゃったら幸いですね。

メモ ASP.NET(VB)AjaxでJsonデータをあつかう

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Ajax1.aspx.vb" Inherits="WebApp001.Ajax1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="jquery/jquery-1.11.2.min.js"></script>
    <script>
        $(document).ready(function () {

            $("#send").click(function () {

                // 通信実行
                $.ajax({
                    type: "P0ST",             // method = "POST"
                    url: "Ajax1.ashx",        // POST送信先のURL
                    data: JSON.stringify([
                        { "name": "Tomo", "age": 43 },
                        { "name": "Kazuki", "age": 11 },
                        { "name": "Chika", "age": 7 },
                        { "name": "Rinko", "age": 5 }
                      ]),  // JSONデータ本体
                    contentType: 'application/json', // リクエストの Content-Type
                    //dataType: "json",           // レスポンスをJSONとしてパースする
                    dataType: 'text',
                    success: function (data) {   // 200 OK時

                        alert(data);

                    },
                    error: function () {         // HTTPエラー時
                        alert("Server Error. Pleasy try again later.");
                    },
                    complete: function () {      // 成功・失敗に関わらず通信が終了した際の処理
                       
                    }
                });

            });

        });
    </script>
</head>
<body>

    <form id="form1" runat="server">
    <div>
        <p><input id="send" value="送信" type="button" /></p>
    </div>
    </form>
</body>
</html>
Imports System.Web
Imports System.Web.Services

Imports Newtonsoft.Json

Public Class Ajax11
    Implements System.Web.IHttpHandler

    Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

        context.Response.ContentType = "application/json"

        'Shift JISで読み込みます
        Dim sr As New System.IO.StreamReader(context.Request.InputStream,
                                                 System.Text.Encoding.GetEncoding("shift_jis"))

        Dim jsonStr As String = sr.ReadToEnd

        'Json文字列をJson形式データに復元する
        Dim jsonObj As Object = JsonConvert.DeserializeObject(Of List(Of Person))(jsonStr)

        For Each item In jsonObj

            Debug.Print(item.name)
            Debug.Print(item.age)
            'Console.WriteLine("user_id={0} level={1}", item("user_id"), item("level"))

        Next

        Debug.Print(jsonStr)

        context.Response.Write("成功です!")
        context.Response.End()

    End Sub

    Public Class Person

        'フィールド
        Private _name As String
        Private _age As Integer

        'プロパティ
        Public Property name() As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                _name = value
            End Set
        End Property
        Public Property age() As Integer
            Get
                Return _age
            End Get
            Set(ByVal value As Integer)
                _age = value
            End Set
        End Property
    End Class

    ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property

End Class