VB.NET ASMX возвращает заголовок ответа в виде XML вместо JSON - PullRequest
1 голос
/ 29 декабря 2011

Мой вызов ASMX возвращается Content-Type = text/xml; charset=utf-8

Я использую ASP.NET 3.5 и jQuery.Ajax.
Добавил эти вещи в соответствии с многочисленными предложениями от переполнения стека

Iсделали это

  1. Сделано это на 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"/>
    
  2. При вызове функции внутри ASMX я использую эти

    <WebMethod()> _
    <ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
    Public Function GetCompanies(SearchedCompany As String) As String
    
  3. вызов 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.Какую часть я здесь упускаю?

Отказ от ответственности: я знаю, что это спрашивалось здесь много раз.Но не смог найти ни одного ответа.Как видите, я уже реализовал все предоставленные решения.

1 Ответ

6 голосов
/ 29 декабря 2011

Вам также нужно установить для contentType значение "application / json; charset = 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, и веб-служба возвращала XML вместо JSON.

...