从asp.net Webservice生成的无效JSON

Invalid JSON Generated from asp.net Webservice?

本文关键字:无效 JSON asp net Webservice      更新时间:2023-09-26

有谁能告诉我,下面通过asp.net web service的方法生成的JSON代码有什么问题吗?

---------------------------
Message from webpage
---------------------------
Error: Invalid JSON: <?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">[{"id:" '1',"title:" 'Event1',"start:"  1310236200,"end:" 1310236200,"allDay:"true,"description:" 'Event1'},{"id:" '3',"title:" 'Event2',"start:"  1309804200,"end:" 1309804200,"allDay:"true,"description:" 'Event2'},{"id:" '4',"title:" 'Event5',"start:"  1311705000,"end:" 1311705000,"allDay:"true,"description:" 'Event5'},{"id:" '5',"title:" 'Event3',"start:"  1309006800,"end:" 1309006800,"allDay:"false,"description:" 'Event3'},{"id:" '6',"title:" 'Event4',"start:"  1310495400,"end:" 1310495400,"allDay:"true,"description:" 'Event4'},{"id:" '7',"title:" 'Time Event1',"start:"  1312144200,"end:" 1312174800,"allDay:"false,"description:" 'Time Event1'},{"id:" '8',"title:" 'save1',"start:"  1312309800,"end:" 1312309800,"allDay:"true,"description:" 'save1111'},{"id:" '9',"title:" 'today',"start:"  1311273000,"end:" 1311273000,"allDay:"true,"description:" 'today'}]</string>
---------------------------
OK   
---------------------------

我认为你的问题归结于错误的服务请求。请参阅工作代码:

web服务代码:

namespace Test.Service
{
  [WebService(Namespace = "http://tempuri.org/")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  [ToolboxItem(false)]
  [ScriptService]
  public class WebService1 : WebService
  {
    [WebMethod]
    public object HelloWorld()
    {
      // ! return anonymous object. It cannot be serialized to xml and orients solely to json-request.
      return new { value = 12345, name = "John" };
    }
  }
}

  1. 通过jquery获取数据

    <script type="text/javascript"> 
      $(document).ready(function () {
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "Service/WebService1.asmx/HelloWorld",
            data: "{}",
            dataType: "json",
            success: function (data) {
              alert(data.d.value);
              alert(data.d.name);
            }
        });
      }
    </script>
    
  2. 通过ASP获取数据。净AJAX

    <asp:ScriptManager ID="_scriptManager" runat="server">
      <Services>
        <asp:ServiceReference Path="Service/WebService1.asmx" />
      </Services>
    </asp:ScriptManager>
    <script type="text/javascript"> 
      $(document).ready(function () {
        Test.Service.WebService1.HelloWorld(OnComplete);
        function OnComplete(result) {
          alert(result.value);
          alert(result.name);
        }
      }  
    </script> 
    

难题?

因为那是XML,不是JSON。

因此错误

也许您的请求指定了" application/xml "或" text/xml "内容类型,请确保您指定了" application/json "内容类型。

您可以使用调试代理,如Fiddler或您的web浏览器的开发工具(如Firebug, Chrome开发工具)来验证这一点。

如果你向我们展示JavaScript代码,我们可能会找到一些东西,否则确保你使用jQuery。如果使用jQuery,则指定"contentType: "application/json; charset=utf-8""。Ajax(使用您需要的实际字符集)。