我将一个带有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"
});
答案 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