Ответ 1
Вам нужно проанализировать строку в переменной populateValue
для объекта:
prePopulate: $.parseJSON(populateValue)
Или, альтернативно, в простой JS:
prePopulate: JSON.parse(populateValue)
Я использую входной токен на своем веб-сайте, и вот как я инициализирую входной токен:
$(document).ready(function () {
var populateValue = document.getElementById('<%= hiddentokenPrePopulate.ClientID%>').value
$("#<%= tokenEmployee.ClientID%>").tokenInput("../Employee/getEmployeeDetails.ashx", {
deleteText: "X",
theme: "facebook",
preventDuplicates: true,
tokenDelimiter: ";",
minChars: 3,
tokenLimit: 1,
prePopulate: populateValue
});
});
script застрял в этой строке:
prePopulate: populateValue
Когда я удаляю эту строку, ошибки javascript не будет, но мне нужно это, поскольку мне нужно предварительно заполнить входной токен. populateValue
:
[{
"id": "11566",
"name": "Smith - White"
}]
Возникла ошибка javascript:
Uncaught TypeError: не может использовать оператор 'in' для поиска '47' в [{ "id": "11566", "name": "Smith - White" }] `
Как я могу исправить эту ошибку?
Вам нужно проанализировать строку в переменной populateValue
для объекта:
prePopulate: $.parseJSON(populateValue)
Или, альтернативно, в простой JS:
prePopulate: JSON.parse(populateValue)
Ваш код на стороне сервера означает страницу .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<ClassObject> return type
return JsonConvert.SerializeObject(result);
}
Затем в моем почтовом методе jQuery:
$.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);
}
});
Вы можете получить эту ошибку, если используете строку в виде массива. Скажите, что если у вас есть json из ajax, и вы забыли проанализировать результат и использовать результат в виде массива. Средство находится так же, как описано выше, для анализа json перед его использованием.
Я тоже получал эту ошибку.
С# Api возвращает данные Serialized Dictionary.
return JsonConvert.SerializeObject(dic_data);
return new JavaScriptSerializer().Serialize(dic_data);
Сохранялось получение этого сообщения об ошибке, пока я просто не вернул данные словаря напрямую, не пытаясь выполнить Serialize
return dic_data;
Больше ошибок на стороне браузера. Не знаю, почему.