ASP.NET JSON& WEBMETHOD

时间:2015-08-06 08:06:30

标签: asp.net json vb.net

我将一个带有JSON的值从客户端发送到ASP.NET中的代码。

一切正常。但是如果我想在后面的代码中使用变量,我就无法访问它。

这是我的代码:

Imports System.Web.Services
Imports System.Web.Script.Serialization

Public Class TextExample
    Inherits System.Web.UI.Page

    Dim lala As String

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    <WebMethod()> _
    Public Shared Sub AddTimeToList(myJsonData As String)
        Dim json As New JavaScriptSerializer()

        Dim myTime As String = json.Deserialize(Of String)(myJsonData)

        lala = myTime
    End Sub
End Class

myTime是我通过JSON从客户端获得的值,lala是在顶部定义的变量。

错误代码:      错误3如果没有类的显式实例,则无法在共享方法或共享成员初始值设定项中引用类的实例成员

JavaScript的:

 $.ajax({
                    type: "POST",
                    url: "TextExample.aspx/AddTimeToList",
                    data: "{'myJsonData':'" + JSON.stringify(timer.innerHTML) + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json"
                });

2 个答案:

答案 0 :(得分:0)

正如错误所述,您正在尝试从共享方法访问实例值,这是禁止的。

您需要将Web方法声明为非共享:

Public Sub AddTimeToList(myJsonData As String)

答案 1 :(得分:0)

所以我解决了这个问题。

我创建了一个List并将其保存到会话变量中。

    <WebMethod(EnableSession:=True)> _
Public Shared Sub AddTimeToList(myJsonData As String)
    Dim myJson As New JavaScriptSerializer()
    Dim myTime As String = myJson.Deserialize(Of String)(myJsonData)

    HttpContext.Current.Session("mySession") = myTime
End Sub