自动完成解析器

时间:2012-08-23 15:34:41

标签: javascript jquery json web-services

我目前正在使用Jquery和webservice来检索自动填充文本框的值。从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();
        }

2 个答案:

答案 0 :(得分: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);
        }
    });

答案 1 :(得分:0)

多数因为你的响应字符串不是json可解析的。将dataType参数更改为:

dataType : text

但是你为什么要用POST来获取一些数据呢?您应该将其更改为GET