0

I am currently using Jquery and a webservice to retrieve values for an autocomplete textbox. After the values are returned from the web service, I get an alert with "parser error" as the warning. Why is this?

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 可解析的。将 dataType 参数更改为:

dataType : text

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

于 2012-08-23T15:55:48.357 回答
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 回答