Попытка получить данные с помощью Ajax-вызова метода контроллера MVC Мой код Прикреплено - PullRequest
0 голосов
/ 28 ноября 2018

Я вызываю функцию jquery при изменении раскрывающегося значения. Метод jquery:

function MyFunction() {
    alert($('#DDlSurvey').val());
    $.ajax({
        url: "@Url.Action("GetSelectedQuestion", "ConductSurveyController")",
        data: { prefix: $('#DDlSurvey').val() },
    type: "GET",
    dataType: "json",
    success: function (data) {
        //  loadData(data);
        alert(data)
        alert("Success");
    },
    error: function () {
        alert("Failed! Please try again.");
    }
});
  //$('#YourLabelId').val('ReplaceWithThisValue');
}
</script>

Я вызываю функцию и получаю предупреждение о раскрывающемся значении

Теперь, функция, которую я вызываю"1006 *" в контроллере "ConductSurveyController"

Метод похож на

[HttpPost]
public JsonResult GetSelectedQuestion(int prefix)
{
    List<SelectList> Questions=new List<SelectList>();

   //  Here "MyDatabaseEntities " is dbContext, which is created at time of model creation.
    SurveyAppEntities ObjectSur = new SurveyAppEntities();
       // Questions = ObjectSur.Surveys.Where(a => a.ID.Equals(prefix)).toToList();

Я не думаю, что этот метод вызывается, поскольку я получаю ошибку

"Failed! Please try again"

Из моего сценария.

Надежды на ваши предложения

Спасибо

 var e = from q in ObjectSur.Questions
         join b in ObjectSur.SurveyQuestions on q.ID equals b.QuestionID where b.SurveyID.Equals(prefix)
         select q ;
         return new JsonResult { Data = e, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Я думаю, что вы используете имя контроллера прямо.ваш код ajax будет примерно таким.

var PostData= { prefix: $('#DDlSurvey').val() }
var ajaxOptions = {
        type: "GET",
        url: '@Url.Action("GetSelectedQuestion", "ConductSurvey")',//Actionname, ControllerName
        data: PostData,
        dataType: "json",
        success: function (result) {
            console.log(result);
        },
        error: function (result) {

        }
};
$.ajax(ajaxOptions);
0 голосов
/ 28 ноября 2018

Ваш метод в вашем контроллере отмечен HttpPost, тогда как в вашем ajax вы указали тип вашего запроса get.Вы можете либо изменить свой метод, чтобы он выглядел следующим образом:

[HttpGet]
public JsonResult GetSelectedQuestion(int prefix)
{
}

, либо измените тип запроса на публикацию в своем вызове Ajax:

$.ajax({
    url: "@Url.Action("GetSelectedQuestion", "ConductSurveyController")",
    data: { prefix: $('#DDlSurvey').val() },
    type: "Post",

Также Controller избыточен в ConductSurveyController, вам нужно удалить его и просто назвать его как ConductSurvey:

url: '@Url.Action("GetSelectedQuestion", "ConductSurvey")',
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...