Javascript AJAX查询不';t调用RESTAPI控制器方法
我有一个RESTAPI控制器,配置如下。单击按钮“PlayerRegistration”,javascript中的更新函数称为prorperly。但问题是DefaultController类中的PostPlayers方法从未使用update函数中的success:function(data)语句调用过。相反,当我通过检查元素来检查浏览器中的控制台时,我看到了内部服务器错误500。我不知道怎么了Javascript AJAX查询不';t调用RESTAPI控制器方法,javascript,html,ajax,api,rest,Javascript,Html,Ajax,Api,Rest,我有一个RESTAPI控制器,配置如下。单击按钮“PlayerRegistration”,javascript中的更新函数称为prorperly。但问题是DefaultController类中的PostPlayers方法从未使用update函数中的success:function(data)语句调用过。相反,当我通过检查元素来检查浏览器中的控制台时,我看到了内部服务器错误500。我不知道怎么了 using System; using System.Collections.Generic; usi
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace WebApplication2.Models
{
public class Default : ApiController
{
public string regID { get; set; }
public string firstName { get; set; }
public string lastName { get; set; }
public string teamName { get; set; }
public DateTime dateOfBirth { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebApplication2.Models;
using System.IO;
using System.Globalization;
using System.Windows.Forms;
namespace WebApplication2.Controllers
{
public class DefaultController : ApiController
{
List<Default>players = new List<Default>();
string path = Path.Combine(Directory.GetCurrentDirectory(), "\\players.txt");
public void readFile()
{
string line;
StreamReader file = new StreamReader(path);
string[] data;
players.Clear();
while ((line = file.ReadLine()) != null)
{
data = line.Split(',');
Default player = new Default();
player.regID = data[0];
player.firstName = data[1];
player.lastName = data[2];
player.teamName = data[3];
player.dateOfBirth = DateTime.ParseExact(data[4],
"yyyy-mm-dd", CultureInfo.InvariantCulture);
players.Add(player);
}
file.Close();
}
public IHttpActionResult PostPlayers(Default playerInfo)
{
readFile();
MessageBox.Show("5");
var player = players.FirstOrDefault((p) => p.regID == playerInfo.regID);
if (player != null)
{
players.Remove(player);
players.Add(playerInfo);
}
else
{
players.Add(playerInfo);
}
using (StreamWriter sw = File.CreateText(path))
{
for (int i = 0; i < players.Count(); i++)
sw.WriteLine(Players_Display(players[i]), Environment.NewLine);
sw.Close();
}
return Ok(players);
}
public string Players_Display(Default player)
{
string data = player.regID + "," + player.firstName + "," + player.lastName + "," + player.teamName + "," + player.dateOfBirth.ToString("yyyy-mm-dd").Substring(0,10);
return data;
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
Net系统;
使用System.Net.Http;
使用System.Web.Http;
命名空间WebApplication2.Models
{
公共类默认值:ApiController
{
公共字符串regID{get;set;}
公共字符串名{get;set;}
公共字符串lastName{get;set;}
公共字符串teamName{get;set;}
公共日期时间出生日期{get;set;}
}
}
使用制度;
使用System.Collections.Generic;
使用System.Linq;
Net系统;
使用System.Net.Http;
使用System.Web.Http;
使用WebApplication2.Models;
使用System.IO;
利用制度全球化;
使用System.Windows.Forms;
命名空间WebApplication2.Controllers
{
公共类DefaultController:ApicController
{
Listplayers=新列表();
字符串路径=path.Combine(Directory.GetCurrentDirectory(),“\\players.txt”);
公共void readFile()
{
弦线;
StreamReader文件=新的StreamReader(路径);
字符串[]数据;
玩家。清除();
而((line=file.ReadLine())!=null)
{
data=line.Split(',');
默认播放器=新默认();
player.regID=数据[0];
player.firstName=数据[1];
player.lastName=数据[2];
player.teamName=数据[3];
player.dateOfBirth=DateTime.ParseExact(数据[4],
“yyyy-mm-dd”,CultureInfo.InvariantCulture);
players.Add(player);
}
file.Close();
}
公共IHttpActionResult后期层(默认playerInfo)
{
readFile();
MessageBox.Show(“5”);
var player=players.FirstOrDefault((p)=>p.regID==playerInfo.regID);
如果(玩家!=null)
{
玩家。移除(玩家);
players.Add(playerInfo);
}
其他的
{
players.Add(playerInfo);
}
使用(StreamWriter sw=File.CreateText(路径))
{
对于(int i=0;i
HTML代码如下所示
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div>
<h2> All Players</h2>
<ul id="players"></ul>
</div>
<div>
<br />
<h2> Search or Delete </h2>
<select id="options_for_search_delete">
<option value="id">ID</option>
<option value="name">Name</option>
</select>
<input type="text" id="data" size="5" />
<input type="button" value="Search" onclick="search()" />
<input type="button" value="Delete" onclick="delet()" />
<br />
<p id="result_players" /><br>
<h2>Player Registration</h2>
<br />
<form>
<label for="id"> RegistrationID:</label><br>
<input type="text" id="regID" name="regID">
<br />
<label for="firstName">First Name:</label><br>
<input type="text" id="firstName" name="firstName">
<br />
<label for="lastName">Last Name:</label><br>
<input type="text" id="lastName" name="lastName">
<br />
<label for="teamName">Team Name:</label><br>
<input type="text" id="teamName" name="teamName">
<br />
<label for="dateofbirth">Date Of Birth:</label><br>
<input type="text" id="dateOfBirth" name="dateOfBirth">
<br />
<input type="button" id="post" value="Player Registration" onclick="update();" />
<p id="data_validation"></p>
</form>
</div>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
<script>
var uri = 'api/Default';
$(document).ready(function () {
$.ajax({
type: 'GET',
url: uri,
success: function (data) {
displayData(data);
}
})
})
function format(item) {
return item.regID + "," + item.firstName + " " + item.lastName + "," + item.teamName + "," + item.dateOfBirth.toString().substring(0, 10);
}
function displayData(data) {
$('ul').empty();
$.each(data, function (key, item) {
$('<li>', { text: format(item) }).appendTo($('#players'));
});
}
function update() {
$('#result_players').text("");
$('#data_validation').text("");
if ($('#regID').val() == "" || $('#firstName').val() == "" || $('#lastName').val() == "" || $('#teamName').val() == "" || $('#dateofbirth').val() == "") {
$('#data_validation').text("Input Boxes Cannot be Empty");
}
else {
$.ajax({
type: 'POST',
url: uri,
data: String($('form').serialize()),
success: function (data) {
displayData(data);
},
error: function (jqXHR, textStatus, err) {
alert(err);
}
})
}
}
</script>
</body>
</html>
所有玩家
搜索或删除
身份证件
名称
球员注册
注册ID:
名字:
姓氏:
团队名称:
出生日期:
var uri='api/Default';
$(文档).ready(函数(){
$.ajax({
键入:“GET”,
url:uri,
成功:功能(数据){
显示数据(数据);
}
})
})
函数格式(项目){
返回item.regID+”、“+item.firstName+”、“+item.lastName+”、“+item.teamName+”、“+item.dateOfBirth.toString()”子字符串(0,10);
}
功能显示数据(数据){
$('ul').empty();
$。每个(数据、功能(键、项){
$(“”,{text:format(item)});
});
}
函数更新(){
$('result_players')。文本(“”);
$(“#数据#验证”)。文本(“”);
如果($(“#regID”).val()=”|$(“#firstName”).val()=”|$(“#lastName”).val()=”|$(“#teamName”).val()=”|$(“#出生日期”).val()=”){
$(“#数据#验证”)。文本(“输入框不能为空”);
}
否则{
$.ajax({
键入:“POST”,
url:uri,
数据:字符串($('form').serialize()),
成功:功能(数据){
显示数据(数据);
},
错误:函数(jqXHR、textStatus、err){
警惕(err);
}
})
}
}
“500内部服务器错误”表示“服务器遇到意外情况,无法满足请求。”
因此,您的javascript可能非常正常,但是服务器端无法执行请求,并且永远不会调用succes回调
您必须查看服务器的日志,以了解根本原因。您能提供一些建议吗。我是一名网络开发新手。请查看服务器端日志。As 500是服务器端错误。