Javascript AJAX查询不';t调用RESTAPI控制器方法

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

我有一个RESTAPI控制器,配置如下。单击按钮“PlayerRegistration”,javascript中的更新函数称为prorperly。但问题是DefaultController类中的PostPlayers方法从未使用update函数中的success:function(data)语句调用过。相反,当我通过检查元素来检查浏览器中的控制台时,我看到了内部服务器错误500。我不知道怎么了

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是服务器端错误。