JQueryから呼び出した.NET Webメソッドがあります。このメソッドは、DIV要素内に表示するHTMLマークアップを返します。
応答を取得したら、使用します
$("#div").html(result.d);
私の質問は、.dは何をするものですか?完全に理解していないコードを使用したくないですか? Evalを使用して同じ結果を得ることができますか?
ADO.NET Data Servicesを参照していますか?
これを返すJSONについてのプレゼンテーションを聞いたことを覚えていますが、配列(複数のエンティティを返す場合)ではなくペイロードがJSONオブジェクトであることを確認してくださいの単なるラッパーだと思います。
特に「d」なのはなぜですか?私は彼らが「まあそれは何かでなければならなかった」というようなことを言ったことを覚えていると思います。
このチュートリアルに基づく: JSON Web Service And jQuery with Visual Studio 2008
Webメソッドは、JSON形式でシリアル化された製品を返します。 JSON
型がないため、戻り値はJSON形式のString
です。
クライアント側では、ajax呼び出しはJSONを返します。
結果は_{d: 'returned-string-with-JSON-format'}
_のようになります
より正確には次のようなものです:_{d:'{"ID":123,"Name":"Surface Pro 2"}'}
_
_'returned-string-with-JSON-format'
_はJSONオブジェクトではなく文字列であるため、cannotは_result.d.ID
_を実行することに注意してください。
代わりに、JSON.parse(result.d)
またはeval(result.d)
を使用してJSONオブジェクトに変換する必要があります
最後に、本当にしたいことはこれを行うことです:
_result = JSON.parse(result.d)
_
[〜#〜] update [〜#〜]また、文字列形式のJSONを使用してJSONオブジェクトに変換する次のデモも検討してください。
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>
ここでのC#コード:
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;
}
}
1つのクラスの詳細を他のクラスに決して開示することはできず、さまざまなメソッドを介して間接的にアクセスできるラッパークラスの例を実際にゼロから学習したい人にとって非常に役立つリンクかもしれません http:// www .c-sharpcorner.com/Blogs/12038/wrapper-class-in-C-Sharp.aspx
$( "#div")。html(result.d);あなたのコードで
「結果」はオブジェクトであり、dは「結果」のプロパティです。
説明しましょう
このようなオブジェクトを作成する場合、
var result{"id": "number", "d": "day"};
resultのプロパティにアクセスする場合は、jqueryを使用することです
$("#div").html(result.d);
htmlで結果を取得します
<html>day</html>
オブジェクト 'd
'の 'result
'という名前のフィールドの値を返します。
この質問 はJSONがどのように見えるかの例を示しています。d:
フィールド。
Dは、.NETコードによって返される結果の一部です。このコードを見ると、dという名前で設定されている変数が表示されます。シリアル化されたクラスから生成された場合、おそらくdという名前のそのクラスのメンバーを送信します。
他の人が指摘したように、"d"
のメンバー"result"
オブジェクト。"d"
を変数で使用できます:
var property = "d";
var value = result[property];