如何在ASP.Net 2.0中强制数据类型为JSON
我转动了我的头后,下面的工作数千次,然后提到parserrror SyntaxError:意外的标记< - 在ASP.NET MVC 4中使用jQuery Ajax加载部分视图
我在我的ASP.Net 2.0
项目中有以下代码。 它的工作原理 - 但为了让它起作用,我使用了dataType: "html"
。 当我使用JSON作为数据类型时,我得到一个分析错误: Unexpected token <
我们如何使它与JSON
工作?
注意:尽管我使用IE8,但我的一些用户仍在使用IE6。 所以我需要一个适用于IE6的解决方案。
jQuery Ajax
$.ajax({
type: "GET",
url: "admPlantParametersViewEdit.aspx/GetResult",
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function(msg)
{
alert("Hi");
},
error: errorFunction
});
VB.Net
<WebMethod()> _
Public Shared Function GetResult() As String
Return "hello"
End Function
请求和响应头
参考
在请求中你需要设置Accept:application / json,如果你的服务器有json支持,那么它会自动发送json响应,
type: "GET",
url: "admPlantParametersViewEdit.aspx/GetResult",
contentType: "application/json; charset=utf-8",
Accept: application/json,
然后在回应标题你应该看到
content-type:application/json
不是content-type:text / html
在提到以下两篇文章后,我想到了它
encosia - ASP.NET Web服务错误:手动JSON序列化
encosia - ASMX ScriptService错误:安装和配置
由于您使用的是.NET 2.0,最可能的罪魁祸首是您已安装了AJAX扩展,但尚未更新您的web.config以使用该新处理程序来处理ASMX请求。
要解决的步骤:
下载ASP.NET AJAX 1.0并安装它,如果尚未完成http://www.microsoft.com/en-us/download/details.aspx?id=883
如下所示删除现有的httpHandler后,添加适当的httpHandler [此配置仅适用于.Net 2.0 。 参考上面提到的其他博客的博客]
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpHandlers>
引用jquery ajax与asp.net不起作用
如
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
和
<assemblies>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
0.4。 做成POST
和json
$.ajax({
type: "POST",
url: "admPlantParametersViewEdit.aspx/GetResult",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg)
{
alert(msg.d);
alert(msg);
},
error: errorFunction
});
如果不引用encosia中的以下内容,此答案将不完整
ASMX服务返回原始JSON的能力可以通过ASP.NET AJAX扩展v1.0最初添加的两个关键特性实现
良好的阅读
上一篇: How to force datatype as JSON in ASP.Net 2.0
下一篇: MVC5 Returning a Generic List of Objects via Jquery Ajax