Json <;WebMethod()>;属性从2.0更改为3.5
我有一个方法,看起来像:Json <;WebMethod()>;属性从2.0更改为3.5,json,asmx,webmethod,Json,Asmx,Webmethod,我有一个方法,看起来像: <WebMethod()> _ Public Function Search(ByVal q As String) As String _ 公共函数搜索(ByVal q作为字符串)作为字符串 从.net 2.0更新到3.5似乎破坏了这一点 我们正在对返回的值执行data.split(),这会生成一个错误-看起来返回的值现在是一个json结构,而不是一个简单的字符串 有没有办法恢复到以前的行为 您必须导入System.Web.Script.Services
<WebMethod()> _
Public Function Search(ByVal q As String) As String
_
公共函数搜索(ByVal q作为字符串)作为字符串
从.net 2.0更新到3.5似乎破坏了这一点
我们正在对返回的值执行data.split(),这会生成一个错误-看起来返回的值现在是一个json结构,而不是一个简单的字符串
有没有办法恢复到以前的行为 您必须导入System.Web.Script.Services 然后,尝试添加此属性:
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Xml)> _
_
_
如何调用web方法?通过javascript?我们遇到了类似的问题。在2.0的Webmethod和jquery ajax调用的基本设置中,它返回一个字符串(js中的类型字符串)或字符串数组(js中的类型对象),在3.5中,它总是返回一个对象,当返回字符串或字符串数组之类的基元时,返回的实际数据在.d之下 到目前为止,我最好的解决方案是使用javascript方法检查.d
function getResponse(r){
if(r.d!=null){
return r.d;
}else{
return r;
}
}
我必须支持2.0版和3.5版的过渡要求,我宁愿不要花费太多精力,因为2.0版很快就会消失
但我希望有更好的解决方案。请确保在ajax方法中指定数据类型参数。如果不指定,jquery将猜测。数据类型是“json”-我们得到了一个json结构,但显然在更新到3.5之前,它是一个简单的字符串。尝试验证这是2.0和3.5之间的更改,并查看是否有方法恢复到以前的行为,或者提供证据表明我们需要更新js调用。2.0不知道如何返回json(除非您通过ajaxtoolkit获得扩展),因此您无法获得json。只需使用success:function(data)和data.d来获取字符串。我只是尝试将我的站点目标更改为2.0,默认情况下我获取xml。不知道你以前是怎么弄到绳子的。也许发布你的jquery代码,你说的“坏”是什么意思?具体点。NET 3.5仍在使用CLR 2.0,并且对ASMX web服务进行了很少的破坏性更改。在更新之前,我们使用返回值执行data.split(),但现在由于“未实现”错误而失败。