2016-06-03 2 views
1

Я хочу передать значение из представления в контроллер с помощью ajax.передать значение контроллеру с помощью ajax

<button onclick="addCommentByAjax()" >Save</button> 

Мой сценарий:

function addCommentByAjax() { 
    $.ajax({ 
     type: "POST", 
     url: '/Survey/DoDetailSurvey', 

     data: { 
      choiceId: "1" 
     } 


}); 
} 

Контроллер:

[HttpPost] 
    public ActionResult DoDetailSurvey(SurveyViewModel model, string choiceId) 
    { 
    // 
    } 

но choiceId всегда нуль

ответ

0
function addCommentByAjax() { 
$.ajax({ 
    type: "POST", 
    url: '/Survey/DoDetailSurvey?choiceId=1' 
    } 
}); 
} 

Вы также можете передать, как это

или для дополнительных параметров

function addCommentByAjax() { 
$.ajax({ 
    type: "POST", 
    url: '/Survey/DoDetailSurvey?choiceId=1&Name=Arun' 
    } 
}); 
} 
2

Изменить пару вещей.

Сначала назначьте свой идентификатор или класс вашей кнопке. Второе удаление функции inline onclick и использование функции ajax click. Затем укажите тип запроса как сообщение.

$('#btnComment').click(function() {  
    var choiceId = $('#YourChoiceId').val(); 

    $.ajax({ 
     url: '/Survey/DoDetailSurvey', 
     data: { 'choiceId' : choiceId}, 
     type: "post", 
     cache: false, 
     success: function (response) { 
      //do something with response 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      alert('error occured'); 
     } 
    }); 
}); 

Затем контроллер должен выглядеть следующим образом

[HttpPost] 
public ActionResult DoDetailSurvey(string choiceId) 
{ 
    // 
} 

Я не знаю, как вы заселения вашего ViewModel, поэтому я намеренно удалил их и показал рабочий пример.

В случае, если вы хотите передать ViewModel вы должны построить свои данные объекта, как это:

var data = {}; 
data.Property1 = some val; 
data.Property2 = "some val"; 

$.post('/Survey/DoDetailSurvey', data); 

Примерная структура SurveyViewModel Я предполагаю:

public class SurveyViewModel 
{ 
    public int Property1 { get; set; } 
    public string Property2 { get; set; } 
} 
+0

Спасибо! Я получаю это – binhhtse

+0

Я так пробовал, но он по-прежнему недействителен, предупреждает: произошла ошибка – binhhtse

+0

use 'JSON.Stringify' –

1

Поскольку в вашем контроллере есть два параметра, вам необходимо идентифицировать их на стороне клиента. Кроме того, вы должны указать contentType.

Вы распространили полезную нагрузку, так как:

function addCommentByAjax() { 
    var payload = { 
     model: { 
     // whatever properties you might have 
     }, 
     choiceId: 1 
    }; 

    $.ajax({ 
     type: "POST", 
     url: '/Survey/DoDetailSurvey', 
     contentType: 'application/json', 
     data: JSON.stringify(payLoad) 
    }); 
} 
+0

Tks all! это сработало – binhhtse

Смежные вопросы