有关如何解决以下问题的任何信息将不胜感激
我正在尝试使用JSON将数据从javascript文件传输到VB.Net应用程序。
javascript文件中的代码如下:
function TalkToServer() {
var formData = "{'firstname':'fname','lastname':'dgln'}"
$.ajax({
type: "POST",
url: "dataserver.aspx/Save",
data: "{'firstname':'fname','lastname':'dgln'}",
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function (msg) {
alert('Hello');
},
error: function () { alert(arguments[2]); }
});
}
VB.Net代码如下:
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.Services
Imports System.Web.Script.Serialization
Imports System.Web.Script.Services
Imports System.Web.UI
Imports System.Web.UI.WebControls
Public Class dataserver
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False)> _
Public Function Save(ByVal formData As williedata) As returnMessages
'Public Function Save(ByVal name As String) As returnMessages
Dim a As String = formData.firstname
Dim b As String = formData.lastname
Dim mes As returnMessages
mes.returnParameters = "KLJN"
mes.recAction = "JKHJH"
Return mes
End Function
End Class
数据结构的定义如下:
Imports Microsoft.VisualBasic
Public Class williedata
Public lastname As String
Public firstname As String
End Class
但是 - 好像从未达到VB.Net功能。以下错误仍然存在:
内部服务器错误
我知道我做错了什么但无法弄清楚是什么。
WCV
答案 0 :(得分:0)
删除 ""
,以便将文字对象传递给JQuery:data: {'firstname':'fname','lastname':'dgln'}
。
由于您将 contentType
设置为JSON,因此JQuery应该从对象文字中正确解析它。由于您当前正在传递一个字符串,即无效的JSON,因此无法对其进行正确编码。
修改强>
由于另一个答案表明我错了,data
参数需要采用contentType
指示的格式,所以在这种情况下有效的JSON:
data: '{"firstname":"fname","lastname":"dgln"}'
答案 1 :(得分:0)
您的数据参数需要与方法签名更接近:
data: '{"formData":{"firstname":"fname", "lastname":"dgln"}}'