【问题标题】:Passing JSON to web method and am getting error.将 JSON 传递给 Web 方法并出现错误。
【发布时间】:2012-02-08 21:24:42
【问题描述】:

我有一个 JSON 对象,我需要将其从服务器传递到客户端以将数据保存在数据库中。

我可以成功通过:

var str2 = JSON.stringify({
    o: oJSON
});

$.ajax({
    type: "POST",
    url: "WebForm1.aspx/Test",
    data: str2,
    processData: false,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {},
    error: function (e) {
        alert(e);
    }
});

和

<System.Web.Services.WebMethodAttribute(),               
System.Web.Script.Services.ScriptMethodAttribute()> _
Public Shared Function Test(ByVal o As RootObject) As String
    Dim strName as string = textboxName.text
End Function

我必须保存两组不同的数据。必须先保存第一组,然后才能保存 json 对象。它只是将文本框值保存到数据库中。第二组是将json存储到数据库中。

我正在尝试将 sName 设置为等于文本框的值,但出现以下错误:

不能从共享对象中引用类的实例成员 没有显式实例的方法或共享成员初始化程序 班级

是否有另一种方法可以将 JSON 对象传递到客户端,以便我可以访问页面上的文本框值?
还是我必须在 JSON 对象中包含 Name 以及我需要的其他值?

【问题讨论】:

  • 你说你想去“服务器 -> 页面 -> 数据库”。这听起来不对,你不想去 "Page -> Server -> Database" 吗?如果这是您想通过 Ajax 使用 JSON 执行的操作,那么您将需要一个采用 2 个值的方法(例如:beforeValue 和 afterValue)。由于您想同时发送之前/之后的值,您需要将之前的值存储在它不会改变的地方(如隐藏字段、JS 变量等)。

标签: javascript jquery asp.net json


【解决方案1】:

不,you won't be able to access your Page's TextBox controls from the static/Shared method。为了让他们能够访问它,AJAX 调用需要将整个 ViewState 传回并在其生命周期中运行 Page,以便实例化 TextBox 并确定它的值应该是什么。到那时,您基本上就拥有了 UpdatePanel,并且会失去使用页面方法的性能优势。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多