0

ajax asp.netを使用してjsonデータを受信しようとしています。Web メソッドを使用した Web サービスを取得しました -

[WebMethod]
public List<Song> GetSongListByMood(string Mood)
{
    SongBL songbl = new SongBL();
    return songbl.GetSongListByMoodBL(Mood);
}

そして私はjavascriptコードを持っています -

        $(document).ready(function () {
        var cssSelector = {
            jPlayer: "#jquery_jplayer_1",
            cssSelectorAncestor: "#jp_container_1"
        };
        var playlist = [];
        var options = {
            swfPath: "./js",
            supplied: "mp3"
        };
        var myPlaylist = new jPlayerPlaylist(cssSelector, playlist, options);
        $("#slider a").click(function () {
            var mood = $(this).text();
            var xhr = new XMLHttpRequest();
            var url = "AvironaService.asmx/GetSongListByMood";
            xhr.open("POST", url, true);
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var obj = JSON.parse(xhr.responseXML.text);
                    myPlaylist.playlist = obj;
                }
            };
            var contentType = "application/x-www-form-urlencoded"
            xhr.setRequestHeader("Content-Type", contentType);
            var qs = 'Mood=' + mood;
            xhr.send(qs);
        });});

基本的に私がやろうとしているのは、JSON形式のajaxを使用してサーバーからデータを取得し、そのデータをプレイリスト変数に入れることです

4

1 に答える 1

0

いくつかの変更を加える必要があります。

  1. stringの代わりにを返すようにメソッドを変更しますList<Song>

  2. usingステートメントを追加しusing System.Web.Script.Serializationます。

  3. のインスタンスを作成し、JavaScriptSerializerそれを使用してオブジェクトをシリアル化し、結果を返します。

それで...

using System.Web.Script.Serialization;

[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]     
public string GetSongListByMood(string Mood)
{
    SongBL songbl = new SongBL();
    var jss = new JavaScriptSerializer();
    return jss.Serialize(songbl.GetSongListByMoodBL(Mood));
}

利用可能なJQueryメソッドを活用するようにAJAXコードを変更します。

$("#slider a").click(function () {
    $.ajax({
        "url" : "AvironaService.asmx/GetSongListByMood",
        "type" : "post",
        "data" : {"Mood" : $(this).text()},
        "dataType" : "json"
        "success" : function(data){
          myPlaylist.playlist = data;
        }
    });
});
于 2012-05-24T18:43:17.570 に答える