私はエラーに遭遇しました、そして私が何が悪いのかを理解しようとしていたので、ここの誰かが私を助けてくれることを願っています、まあ、あまりにも長い間!
さて、私は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も追加しましたが、効果はありません。私は困惑しています:(
ありがとう