Что значит .d в JSON?
У меня есть веб-метод .NET, который я вызвал из jQuery. Метод возвращает некоторую HTML-разметку, которую я показываю внутри элемента DIV.
Как только у меня есть ответ, я использую
$("#div").html(result.d);
Мой вопрос: что делает .d? Мне не нравится использовать код, который я не совсем понимаю? Могу ли я получить тот же результат с помощью Eval?
Ответы
Ответ 1
Вы имеете в виду службы данных ADO.NET?
Я помню, как слышал презентацию о том, что JSON возвращает это, и я думаю, что его просто оболочка для гарантирует, что полезная нагрузка - это объект JSON, в отличие от массива (в случае возвращения нескольких объектов).
Почему именно? Думаю, я помню, как они говорили что-то вроде "хорошо, что это должно быть что-то".
Ответ 2
На основе этого урока: JSON Web Service и jQuery с Visual Studio 2008
Веб-метод возвращает продукт, который сериализуется в формате JSON. Поскольку тип JSON
не существует, возвращаемое значение равно String
с форматом JSON.
На стороне клиента вызов ajax возвращает JSON.
Результат выглядит как {d: 'returned-string-with-JSON-format'}
Более точно что-то вроде: {d:'{"ID":123,"Name":"Surface Pro 2"}'}
Обратите внимание, что 'returned-string-with-JSON-format'
- это строка, не являющаяся объектом JSON, поэтому не может делать result.d.ID
.
Вместо этого вам нужно преобразовать его в объект JSON с помощью JSON.parse(result.d)
или eval(result.d)
В конце концов, вы действительно хотите сделать это:
result = JSON.parse(result.d)
UPDATE
Также рассмотрим эту демонстрацию, где я использую JSON в строковом формате и конвертирую его в объект JSON:
![enter image description here]()
Ответ 3
Код ASPX здесь:
<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
<script type="text/javascript">
function GetData()
{
alert("I am called");
$.ajax({
type: "POST",
url: "Contact.aspx/GetProducts",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
var data = JSON.parse(result.d)
alert(data.Id);
},
error:function(ex)
{
alert("Test");
}
});
}
</script>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="GetData();" />
</asp:Content>
Код С# здесь:
public partial class Contact : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindList();
}
int[] arr1 = new int[] { 1, 2 };
ListBox1.SelectedValue = "1";
ListBox1.SelectedValue = "4";
}
void BindList()
{
List<Product> lst = new List<Product>()
{
new Product{Id=1,Name="Photo"},
new Product{Id=2,Name="Photo"},
new Product{Id=3,Name="Photo"},
new Product{Id=4,Name="Photo"}
};
ListBox1.DataSource = lst;
ListBox1.DataTextField = "Name";
ListBox1.DataValueField = "Id";
ListBox1.DataBind();
}
[WebMethod]
public static string GetProducts()
{
// instantiate a serializer
JavaScriptSerializer TheSerializer = new JavaScriptSerializer();
//optional: you can create your own custom converter
// TheSerializer.RegisterConverters(new JavaScriptConverter[] { new MyCustomJson() });
//var products = context.GetProducts().ToList();
Product products = new Product() { Id = 1, Name = "Testing Services" };
var TheJson = TheSerializer.Serialize(products);
return TheJson;
}
}
Ответ 4
может быть очень полезной ссылкой для тех, кто хочет действительно научиться с нуля, например, о классе-оболочке, где детали в одном классе никогда не могут быть раскрыты другому классу, но могут быть косвенно доступны с помощью различных методов
http://www.c-sharpcorner.com/Blogs/12038/wrapper-class-in-C-Sharp.aspx
Ответ 5
Он возвращает значение поля с именем 'd
' в объекте 'result
'.
Этот вопрос показывает пример того, как может выглядеть JSON, обратите внимание на поле d:
.
Ответ 6
d является частью результата, возвращаемого вашим кодом .NET. Если вы посмотрите на этот код, вы увидите переменную с именем d. Если он генерируется из сериализованных классов, то он, вероятно, отправляет член этого класса с именем d.
Ответ 7
Как указывали другие, он возвращает член "d"
объекта "result"
.
Если вы хотите иметь "d"
в переменной, вы можете использовать это:
var property = "d";
var value = result[property];
Ответ 8
Очень ясно, что $( "# div" ). html (result.d); в вашем коде
"результат" - это объект, а d - свойство "результата".
Объясним,
если вы создаете такой объект,
var result{"id": "number", "d": "day"};
если мы получаем доступ к свойству результата, это использование jquery
$("#div").html(result.d);
поэтому мы получаем результат в html
<html>day</html>