gpt4 book ai didi

asp.net - 使用 jQuery Ajax 将参数传递给 WebMethod

转载 作者:行者123 更新时间:2023-12-03 22:06:58 26 4
gpt4 key购买 nike

我有一个简单的 Web 方法和 ajax 调用,但继续收到一条错误,指出它无法将字符串转换为 IDictionary 对象???

这是 ajax 调用:

var params = '{"ID":"' + rowid + '"}';
$.ajax({
url: 'EDI.asmx/GetPartnerDetails',
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(params),
dataType: "json", //not json . let me try to parse
success: function(msg, st) { . . . .

这是 webMethod:

<WebMethod()> _
Public Function GetPartnerDetails(ByVal ID As String) As String

'Dim objParam As IDictionary = CType(JsonConvert.DeserializeObject(ID), IDictionary)
'Dim rowID As String = objParam("ID")

Dim objController As New HealthComp.BLL.X12Partners.TradingPartnersController
Dim objInfo As TradingPartnersInfo = objController.FetchByPartnerID(Int32.Parse(ID))

Return JsonConvert.SerializeObject(objInfo)
End Function

这是我从 FireBug 看到的内容:

响应 header
服务器:Microsoft-IIS/5.1
日期:2009 年 4 月 9 日星期四 21:43:59 GMT
json错误:true
缓存控制:私有(private)
内容类型:application/json;字符集=utf-8
内容长度:1331

发布:“{\”ID\“:\”4\“}”

回应:

{"Message":"无法将\u0027System.String\u0027 类型的对象转换为\u0027System.Collections 类型.Generic.IDictionary`2[System.String,System.Object]\u0027","StackTrace":"在 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type 类型, JavaScriptSerializer 序列化器, bool 值 throwOnError、Object& ConvertedObject)\r\n 位于 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o、Type 类型、JavaScriptSerializer 序列化器、Boolean throwOnError、Object& returnedObject)\r\n 在 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToType(对象 o,类型类型,JavaScriptSerializer 序列化器)\r\n 在 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer 序列化程序、字符串输入、类型类型、Int32 深度限制)\r\n 位于 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](字符串输入)\r\n 在 System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext 上下文、JavaScriptSerializer 序列化器)\r\n 位于 System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n 在 System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":“System.InvalidOperationException”}

有人对此有什么想法吗?谢谢!!

最佳答案

快速项目:

你的变量参数var params = '{ID:' + rowid + '}';是一个字符串。

所以这一行:data: JSON.stringify(params), 是多余的(或者应该是)。只需设置 data: params,

接下来,在您的 Web 方法中,将结果转换为 JSON 字符串并将其作为字符串返回。如果您的 Web 方法类具有 ScriptMethod 属性,则不需要这样做。只需将数据作为 native 类型返回,Asp.Net 就会为您转换为 JSON。

您可能会阅读以下文章: http://elegantcode.com/2009/02/21/javascript-arrays-via-jquery-ajax-to-an-aspnet-webmethod/

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

关于asp.net - 使用 jQuery Ajax 将参数传递给 WebMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/736058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com