如何在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

请求和响应头

在这里输入图像描述

参考

  • jQuery ajax函数中contentType和dataType之间的区别
  • AJAX请求中的内容类型和数据类型是什么?
  • 如何从2.0 asmx web服务返回JSON
  • ASP.NET AJAX PageMethods调用.NET 4.5 IIS 7.5的加载整个页面
  • 在Rest WCF中支持跨域请求(特别是WebInvoke中的多个方法)
  • jQuery $ .ajax(),$ .post在Firefox中发送“OPTIONS”作为REQUEST_METHOD
  • 无法在jQuery.ajax中将content-type设置为'application / json'

  • 在请求中你需要设置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。 做成POSTjson

      $.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最初添加的两个关键特性实现

  • JavaScriptSerializer
  • ScriptHandlerFactory
  • 良好的阅读

  • Scott Gu的--JSON劫持和ASP.NET AJAX 1.0如何避免这些攻击
  • ASP.NET AJAX版本之间的重大变化
  • ajax jQuery asp.net错误意外的标记<
  • ASMX ScriptService错误:安装和配置
  • 在ASP.NET Web API中使用JSON.NET
  • jQuery,ASP.NET Web API和Json.NET走进一个酒吧......
  • ASP.NET AJAX应用程序的部署问题
  • 链接地址: http://www.djcxy.com/p/46143.html

    上一篇: How to force datatype as JSON in ASP.Net 2.0

    下一篇: MVC5 Returning a Generic List of Objects via Jquery Ajax