我目前正在使用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();
}
答案 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