0

現在、Jquery と Web サービスを使用して、オートコンプリート テキスト ボックスの値を取得しています。Web サービスから値が返された後、「パーサー エラー」という警告が表示されます。どうしてこれなの?

Jquery

$(document).ready(function() {

    $.ajax({
        type: "POST",
        url: "/Service/WSDataService.asmx/GetStates",
        dataType: "json",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        success: function(data) {
            var datafromServer = data.d.split(":");
            $("[id$='txtautofromDB']").autocomplete({
                source: datafromServer
            });
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
           alert(textStatus);
        }
    });
}


web service
        [WebMethod]
        public string GetStates()
        {
            StringBuilder sbStates = new StringBuilder();
            List<string> stringlist = new List<String>();
            stringlist.Add("alabama");
            stringlist.Add("boston");
            stringlist.Add("abernathy");
            /*XmlDocument doc = new XmlDocument();
            doc.Load(Server.MapPath("~/Data/States.xml"));*/
            try
            {
                foreach (string xnl in stringlist)
                {

                    sbStates.AppendFormat("{0}:", xnl);
                }

                sbStates = sbStates.Remove(sbStates.Length - 1, 1); //Removes the extra ":"
            }
            catch (Exception ex)
            {
                string exp = ex.ToString();     //Setup a breakpoint here 
                //to verify any exceptions raised.
            }
            return sbStates.ToString();
        }
4

2 に答える 2

0

JSonオブジェクトを期待する理由はありません。一般的な文字列ベースの応答のみを要求すると、正常に機能するはずです。

JSonオブジェクトのアプローチに固執したい場合は、文字列のリストを返してみてください。JavaScriptに逆シリアル化すると、文字列のリストが表示されます。

更新(ajaxを介して文字列を取得する方法):

$.ajax({
        url: "/Service/WSDataService.asmx/GetStates",        
        success: function(data) {
            var datafromServer = data.split(":");
            $("[id$='txtautofromDB']").autocomplete({
                source: datafromServer
            });
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
           alert(textStatus);
        }
    });
于 2012-08-23T15:45:16.047 に答える
0

応答文字列はjson解析可能ではないため、これが最も適切です。dataTypeパラメーターを次のように変更します。

dataType : text

しかし、なぜPOSTを使用してデータを取得しているのですか?GETに変更する必要があります

于 2012-08-23T15:55:48.357 に答える