Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json <;WebMethod()>;属性从2.0更改为3.5_Json_Asmx_Webmethod - Fatal编程技术网

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(),但现在由于“未实现”错误而失败。