未捕获的TypeError:无法使用’in’运算符在JSON字符串中搜索”
我在我的网站上使用了令牌输入,这是我如何初始化令牌输入:
$(document).ready(function () { var populateValue = document.getElementById('').value $("#").tokenInput("../Employee/getEmployeeDetails.ashx", { deleteText: "X", theme: "facebook", preventDuplicates: true, tokenDelimiter: ";", minChars: 3, tokenLimit: 1, prePopulate: populateValue }); });
脚本被困在这一行:
prePopulate: populateValue
当我删除这一行时,不会有任何javascript错误,但我需要这个,因为我需要预先填充令牌输入。 populateValue
是:
[{ "id": "11566", "name": "Smith - White" }]
有一个javascript错误:
未捕获的TypeError:不能使用’in’运算符在[{“id”:“11566”,“name”:“Smith – White”}中搜索’47’
我该如何解决这个错误?
您需要将populateValue
变量中的字符串解析为对象:
prePopulate: $.parseJSON(populateValue)
或者,在普通JS中:
prePopulate: JSON.parse(populateValue)
如果您使用字符串作为数组,则可能会出现此错误。 如果你从ajax获得了一个json,并且忘了解析结果,并将结果用作数组。 解决方法如上所述,在使用之前解析json。
您的服务器端代码意味着.CS页面,您已经编写了WebMethod,应始终返回.ToList()
表示json数组
这是我的.CS页面代码:
的WebMethod
public static string PopulateDetails(Guid id){ var prx = new ProductProxy(); var result = prx.GetFirstorDefault(id); // this method is having List return type return JsonConvert.SerializeObject(result); }
然后在我的jQuery post方法中:
$.ajax({ type: "POST", dataType: "json", contentType: "application/json; charset=utf-8", url: "Productjq.aspx/PopulateDetails", data: JSON.stringify({id: id}), // This is Id of selected record, to fetch data success: function(result) { var rspns = eval(result.d); // eval is used to get only text from json, because raw json looks like "Id"\"1234" $.each(rspns, function() { $('#<%=txtProductName.ClientID %>').val(this.Name); }); }, error: function(xhr, textStatus, error) { alert('Error' + error); } });
我也得到了这个错误。
C#Api返回序列化字典数据。
return JsonConvert.SerializeObject(dic_data); return new JavaScriptSerializer().Serialize(dic_data);
保持收到此错误消息,直到我直接返回字典数据而不尝试序列化
return dic_data;
浏览器端没有更多错误。 不知道为什么。