Lectura de datos XML del servicio web ASMX para autocompletar Jquery

os servicios web @Me y ASMX no funcionan. Discutimos. Ella plantea argumentos que tuvimos en el pasado. Es un dolor. ¡Nuestra relación está en las rocas!

Tengo un servicio web ASMX, que no he serializado con la biblioteca Newtonsoft (como se explica por qué aquí:http: //encosia.com/2011/04/13/asp-net-web-services-mistake-manual-json-serialization). Se parece a esto

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string[] GetCitiesWithState(string isoalpha2, string prefixText)
    {
        var dict = AtomicCore.CityObject.GetCitiesInCountryWithStateAutocomplete(isoalpha2, prefixText);
        string[] cities = dict.Values.ToArray();
        return cities;
    }

Simple suficiente ¿verdad? Devuelve esto cuando buscanew:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <string>New Orleans, Louisiana</string>
  <string>New York, New York</string>
</ArrayOfString>

Estaba esperando JSON, pero después de leer un poco, parece que no debería intentar serializar la salida, debería suceder, ¿verdad? De todos modos, tengo el siguiente JQuery en la interfaz:

$('#<%=txtCity.ClientID%>').autocomplete('<%=ResolveUrl("~/AtomicService/Assets.asmx/GetCitiesWithState")%>', {
            dataType: 'json',
            httpMethod: 'POST',
            contentType: 'application/json; charset=utf-8',
            parse: function (data) {
                var rows = new Array();
                for (var i = 0; i < data.d.length; i++) {
                    rows[i] = { data: data.d[i], value: data.d[i].Value, result: data.d[i].Value };
                }
                return rows;
            },
            formatItem: function (row, i, n) {
                return row.Value;
            },
            extraParams: {
                minChars: 2,
                isoalpha2: '<%=Session["BusinessCountry"].ToString()%>',
                maxRows: 20,
                prefixText: function () {
                    return $('#<%=txtCity.ClientID%>').val()
                }
            },
            max: 20
        }).result(function (event, data, formatted) {
            if (data) {
                alert(data['Key']);
            }
        });

Puedo ver las llamadas con Chrome:

¡Y aún así todo sucede! No hay errores de Jquery, no hay fuegos artificiales, no hay nada. Ella me está ignorando.

l principio, estaba culpando al servicio web, pero creo que esto puede tener más que ver con la forma en que analizo y formateo los datos en jquery.

Entonces,mi pregunta e, ¿qué estoy haciendo mal y cómo puedo hacer que el autocompletado funcione correctamente?

Ayuda apreciada:)

EDIT: Puede que no sea útil, pero esto es lo que veo en Fiddler:

Respuestas a la pregunta(2)

Su respuesta a la pregunta