1

私はエラーに遭遇しました、そして私が何が悪いのかを理解しようとしていたので、ここの誰かが私を助けてくれることを願っています、まあ、あまりにも長い間!

さて、私はAJAXとjQueryと一緒にWCFを使用して、というクラスにアクセスしています。Player

これが関連するWCFインターフェースですOperationContract

    [OperationContract]
[WebInvoke(Method = "POST",
        BodyStyle = WebMessageBodyStyle.Wrapped,
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "/getplayers")]
[return: MessageParameter(Name = "Players")]
Player[] GetPlayersInTeam(int TeamId);

実際のRESTサービス方法は次のとおりです。

         public Player[] GetPlayersInTeam(int teamId)
    {
        string connString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;

        SqlConnection conn = new SqlConnection(connString);

        try
        {
            conn.Open();
        }
        catch
        {

        }

        List<Player> Players = new List<Player>();

        string query = "SELECT * FROM Player WHERE TeamId = @TeamId";

        SqlCommand command = new SqlCommand(query, conn);
        command.Parameters.AddWithValue("@TeamId", teamId);

        SqlDataReader reader = command.ExecuteReader();

        if (reader.HasRows)
        {
            while (reader.Read())
            {
                Player player = new Player(teamId, Convert.ToString(reader[2]), 
                                            Convert.ToString(reader[3]));

                Players.Add(player);
            }

            return Players.ToArray();
        }

        return null;
    }
}

プレーヤークラスは次のとおりです。

[DataContract(Name = "Player", Namespace = "")]
    public class Player
    {
        // attributes

        private int _teamId;
        private string _playerName;
        private string _position;

        public Player() { }

        public Player(int teamId, string playerName, string position)
        {
            _teamId = teamId;
            _playerName = playerName;
            _position = position;
        }

        [DataMember(Name = "teamId", Order = 1)]
        public int TeamId
        {
            get { return _teamId; }
            set { _teamId = value; }
        }

        [DataMember(Name = "playerName", Order = 2)]
        public string PlayerName
        {
            get { return _playerName; }
            set { _playerName = value; }
        }

        [DataMember(Name = "position", Order = 3)]
        public string Position
        {
            get { return _position; }
            set { _position = value; }
        }
    }

そして、これがjQuery-Ajaxリクエストです。

<script type="text/javascript" language="javascript">
    $(document).ready(function () {

        var teamId = $.session.get("teamId");

        $.ajax({
            cache: false,
            type: "POST",
            url: "RestService.svc/getplayers",
            data: '{ "teamId":"' + teamId + '"}',
            contentType: "application/json; charset=utf-8",
            success: function (json, status, req) {
                var JSONReturn = json.Players;

                if (JSONReturn != null) {
                    alert("picked up players");
                }
                else {
                    alert("error");
                }
            },
            error: AjaxError
        });

成功関数は常に戻ってくるようでnull、理由はわかりません。私は基本的に、関連するすべてのプレーヤーを取得したいと思います。teamIdここで、teamIdはセッションフィールドです。teamIdフィールドは問題なく動作し、電流を完全に返すためteamId、それとは関係ありません。

しかしとにかく、どんな助けでも大歓迎です。私は夢中になっているので、それが単純なエラーであることを願っています。(そのような初心者プログラマー)。

編集:コンソールログ関数は、ajaxリクエストのsuccess関数内のjsonにPlayerクラスのPlayersリストが含まれていることを示していますが、リストはnullに設定されています。

CONSOLE.LOG
XHR finished loading: "http://localhost:54033/RestService.svc/getplayers". jquery.js:18
send jquery.js:18
b.extend.ajax jquery.js:18
(anonymous function) TeamSelection.aspx:24
c jquery.js:5
p.fireWith jquery.js:5
b.extend.ready jquery.js:5
H jquery.js:5
Object {Players: null} 

(TeamSelection.aspx無名関数は上記のajax呼び出しです。下部に表示されているように、jsonにはPlayersというオブジェクトが含まれているようですが、nullと同じです。

これがなぜなのか理解できません。dataTypeも追加しましたが、効果はありません。私は困惑しています:(

ありがとう

4

0 に答える 0