Как сделать вызов ajax POST в Visual Studio Rest API

Прошло 2 дня, я застрял на глупой ошибке. Я не могу сделать почтовый вызов ajax. Может ли кто-нибудь помочь мне решить, что я делаю неправильно. Это будет замечательно. Я всегда получаю 500 внутренних ошибок сервера. Я знаю, что означает ошибка, но как от нее избавиться. Ниже моя функция ajax, которая всегда возвращает «сбой»

 function Add() {
        var Tname = document.getElementById("TaskName").value.trim();
        var Sdate = document.getElementById("StartDate").value.trim();
        var Edate = document.getElementById("EndDate").value.trim();
        var sms = document.getElementById("chkSMS").checked;
        var email = document.getElementById("chkEmail").checked;
        var assigned = document.getElementById("test").value.trim();

        if (Tname == "")
        {
            alert("Please enter Your Task Name");
            return;
        }
        if (Sdate >= Edate)
        {
            alert("Please Correct the Start And End date");
            return;
        }
        
            var user = $("#test").select2("val");
            console.log(user);

            var model = {
                id:$("#secid").val(),
                projectId: $("#ProjectDropdown").val(),
                task_name: $("#TaskName").val(),
                description: $("#Desc").val(),
                start_date: $("#StartDate").val(),
                end_date: $("#EndDate").val(),
                sms: document.getElementById("chkSMS").checked,
                email: document.getElementById("chkEmail").checked,
                status:"1",
                tempUsers: user
            };
            console.log(model);
            $.ajax
                (
                    {
              
                url: '/api/TaskApi/',
                type: 'POST',
                data: model,
                dataType: "json",
                success: function (data) {
                    alert('Task Added');
                   // location.reload(); // this is not a good practice
                },
                error: function () { alert('Task not Added'); }
            });
        
    }
   [Route("/api/TaskApi/"), HttpPost]
        public String CreateTask(tempTask tempTask )
        {

            Task task = new Task();
            task.enable = true;
            task.created_on = DateTime.Now;
            task.task_name = tempTask.task_name;
            task.description = tempTask.description;
            task.start_date = tempTask.start_date;
            task.end_date = tempTask.end_date;
            task.status = tempTask.status;
            task.sms = tempTask.sms;
            task.email = tempTask.email;
            db.task.Add(task);
            Tagging tag = new Tagging();
            tag.tasks = task;
            tag.project = db.project.Find(tempTask.projectId);
            List<Users> usr = new List<Users>();
            for (int i = 0; i < tempTask.tempUsers.Count; i++)
            {

                var user = db.user.Find(tempTask.tempUsers[i]);
                usr.Add(user);
            }
            tag.users = usr;
            db.tagging.Add(tag);
            if (db.SaveChanges() > 0)
            {
                return "task success!!";

            }
            else
            {
                return "Some Error";
            }

           
        }

EDIT: мне просто нужно нажать первую строку кода в моем методе C# CreateTask. Я не могу ударить его. Остальной код и модель просмотра в порядке. Я проверил.

EDIT: json.strigify(model) // вывод в консоль {"id":"0","projectId":"6007","task_name":"fgfg","description":" fgf","start_date":"2017-05-05","end_date":"2017-05-11","sms":false,"email":true,"status":"1","tempUsers" :["1003"]}

   public class tempTask
    {
        public int id { get; set; }
        public int projectId { get; set; }
        public string task_name { get; set; }
        public string description { get; set; }
        public DateTime start_date { get; set; }
        public DateTime end_date { get; set; }
        public bool sms { get; set; }
        public bool email { get; set; }
        public int status { get; set; }
        public List<int> tempUsers { get; set; }
    }


person nimra asad    schedule 11.05.2017    source источник
comment
Не могли бы вы попробовать передать только целое число и проверить, работает ли оно.. затем продолжить..   -  person Abi    schedule 11.05.2017
comment
Можете ли вы опубликовать свой модальный ..   -  person Asif Raza    schedule 11.05.2017
comment
Я могу выложить любую вещь... Скажи мне, какой модальный? немного подробно   -  person nimra asad    schedule 11.05.2017
comment
добавил мою модальную задачу temptask @asif raza   -  person nimra asad    schedule 11.05.2017
comment
Надеюсь, ваш API-контроллер общедоступен   -  person Abi    schedule 11.05.2017
comment
открытый класс TaskApiController : ApiController   -  person nimra asad    schedule 11.05.2017
comment
вы можете изменить URL маршрута на /api/TaskApi/Create/ и попробовать   -  person Abi    schedule 11.05.2017
comment
Вы все еще сталкиваетесь с проблемой ??   -  person Asif Raza    schedule 11.05.2017
comment
I am always getting 500 internal server error. что говорит эта ошибка? Что в ответ на этот хит?   -  person Manoz    schedule 11.05.2017
comment
@Manoz убедитесь, что URL-адрес, параметр должен быть таким же, как   -  person Asif Raza    schedule 11.05.2017


Ответы (3)


введите описание изображения здесь Проблема, которую я нахожу в вашем коде 1) URL-адрес вашего веб-API 2) Отправка данных на сервер, сделайте так, как контроллер хочет код Ajax

         $('#postdata').click(function() {
           // alert('alert btn click');

            // Dear Nim , i'm just using dafault value , its working from my side

            var userArray = [];
            var user = 1 ; //get the value of user , push into array , then send to it.
            userArray.push(user);

            //you can loop it through 
           // for (var i = 0; i < 10; i++) {
           //     userArray.push(i)
          //  }

            var model = {
                id: 0,  //should be integer , parse to parseInt(value)
                projectId: 1, //should be integer , parse to parseInt(value)
                task_name:"sdfsadfsadf",
                description: "description",
                start_date: '13-12-2007',
                end_date: '13-12-2007',
                sms: true,
                email: true,
                status: 1, //should be integer , parse to parseInt(value)
                tempUsers: userArray // array of integer
            };

            console.log('modal')
            console.log(model)
                $.ajax({
                    type: "POST",
                    url: 'http://localhost:3153/api/TaskApi',
                    contentType: 'application/json',
                    dataType: 'text',
                    async: false,
                    traditional: true,
                    data: JSON.stringify(model),
                    success: function (data, status, xhr) {
                             //alert here data
                        if (xhr.statusText == 'Created' && xhr.status == 201) {
                         //do stuff here
                        }
                        else {
                          //do stuff here
                        }

                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert('error')

                    }
                });


        })
    })

Контроллер

    [Route("api/TaskApi")]
    [HttpPost]
    public String TaskApi(tempTask tempTask)
    {
        return "Some Message";
    }

    public class tempTask
    {
        public int id { get; set; }
        public int projectId { get; set; }
        public string task_name { get; set; }
        public string description { get; set; }
        public DateTime start_date { get; set; }
        public DateTime end_date { get; set; }
        public bool sms { get; set; }
        public bool email { get; set; }
        public int status { get; set; }
        public List<int> tempUsers { get; set; }
    }
person Asif Raza    schedule 11.05.2017
comment
традиционный: правда, добавьте его - person Asif Raza; 11.05.2017
comment
Обновление кода, пожалуйста, посмотрите - person Asif Raza; 11.05.2017

Просто попробуй,

  $.ajax
    ({
    url: '/api/TaskApi/',
    type: 'POST',
    data: Json.stringyfy(model),
    dataType: "json",
    success: function(data) {
        alert('Task Added');
        // location.reload(); // this is not a good practice
    },
    error: function() { alert('Task not Added'); }
});
person Sajeetharan    schedule 11.05.2017
comment
Сначала я попробовал тот же json.stringyfy. но такая же проблема. - person nimra asad; 11.05.2017
comment
@nimraasad вы пробовали с URL '/api/TaskApi' - person Sajeetharan; 11.05.2017
comment
ага! Ничего не произошло - person nimra asad; 11.05.2017
comment
у тебя есть тимвьювер? - person Sajeetharan; 11.05.2017

Убедитесь, что вы зарегистрировали атрибут routeAttribute в RouteConfig в папке AppStart.

routes.MapMvcAttributeRoutes(); 

установите их раньше, настройте конфигурацию всех маршрутов.

person Ankit Rana    schedule 11.05.2017
comment
Это продолжающийся проект, и перед этим вызовом ajax я сделал несколько вызовов post put и get с пустыми моделями и моделями fileld, поскольку все параметры работают ... Таким образом, доказано, что я настроил маршруты в своем AppStart;) @ankit - person nimra asad; 11.05.2017
comment
@nimraasad, не могли бы вы также добавить рассматриваемый вывод JSON.stringyfy(model), я думаю, что во время процесса привязки модели возникает ошибка. - person Ankit Rana; 11.05.2017
comment
как получить вывод strigify для публикации здесь? @ ankit ты можешь направить? - person nimra asad; 11.05.2017
comment
добавил, что вывод strigify в моем вопросе также - person nimra asad; 11.05.2017
comment
все выглядит нормально, вы запросили создать контроллер, чтобы отправить запрос и добавить точку останова в конструкторе контроллера. посмотрите, достигает ли запрос точки останова конструктора, означает, что ваш экземпляр контроллера создан, и ваша проблема связана со стороной привязки модели. - person Ankit Rana; 11.05.2017