2011-12-29 54 views
1

我ASMX調用返回Content-Type = text/xml; charset=utf-8VB.NET ASMX返回響應報頭爲XML而不是JSON

我使用ASP.NET 3.5和jQuery.Ajax
已經添加了這些東西都是從堆棧溢出每許多建議

我在web.config中

<remove verb="*" path="*.asmx"/> 
<add verb="*" path="*.asmx" validate="false" 
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
  • 在ASMX裏面的函數調用來完成這些事情

    1. 這樣做,我正在使用這些

      <WebMethod()> _ 
      <ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _ 
      Public Function GetCompanies(SearchedCompany As String) As String 
      
    2. jQuery的Ajax調用是這樣

      var searchString = "SearchedCompany=" + $(".auto-company").val(); 
      $.ajax({ 
          type: "POST", 
          url: "Services/CompaniesService.asmx/GetCompanies", 
          data: searchString, 
          dataType: 'json', 
          success: function (msg) { 
           companies = msg.hasOwnProperty("d") ? msg.d : msg; 
          }, 
          error: function (xhr, status, error) { 
      
          } 
      }); 
      

    但無論我做什麼,響應報頭是XML類型的依然。我在這裏想念什麼?

    聲明:我知道這已被問了很多次。但無法找到任何答案。正如你所看到的,我已經實施了所有提供的解決方案。

  • 回答

    6

    您需要設置的contentType以及爲 「application/JSON;字符集= UTF-8」

    http://encosia.com/using-jquery-to-consume-aspnet-json-web-services/

    因爲jQuery確實設置在具有 數據POST請求的內容類型,內容類型最初設置爲默認 「application/x-www-form-urlencoded」。然後在IE7中, setRequestHeader被加入「application/json; charset = utf-8「到 ,而不是真正設置它。因此, JSON序列化的內容類型不正確,Web服務正在返回XML而不是 JSON。

    +2

    +1爲Encosia參考。我無法計算我回到這些文章的次數。 – lsuarez 2011-12-29 14:55:47

    +2

    @naveen請仔細閱讀鏈接資源。正如文章所指出的那樣:「通過ASP.NET AJAX擴展序列化JSON的ASP.NET Web服務的安全功能是必須以特定方式請求它們。 ...請求的內容類型必須是:「application/json; charset = utf-8」' – lsuarez 2011-12-29 17:05:48

    +0

    @libioaux感謝您的額外信息,希望這可以讓他得到他需要的地方。 – Gent 2011-12-29 17:07:58

    相關問題