#ajax #asp.net-mvc #model-view-controller #asp.net-ajax #actionresult
#ajax #asp.net-mvc #модель-представление-контроллер #asp.net-ajax #actionresult
Вопрос:
У меня есть кнопка с классом «btn» и диапазоном с идентификатором «ajaxtest». Когда я нажимаю на кнопку, я хочу поместить текст «test» в свой тег span. И это должно быть сделано в ASP.NET MVC.
В представлении у меня есть следующий вызов ajax:
<span id="ajaxtest"></span>
<input type="submit" class="btn" name="neverMind" value="Test BTN"/>
<script>
$(document).ready(function () {
$(".btn").click(function () {
$.ajax({
method: "get",
cache: false,
url: "/MyController/MyAction",
dataType: 'string',
success: function (resp) {
$("#ajaxtest").html(resp);
}
});
});
});
</script>
В MyController у меня есть следующий код:
public string MyAction()
{
return "test";
}
Я знаю, как работает Ajax, и я знаю, как работает MVC. Я знаю, что, возможно, ошибка связана с тем, что мы ожидаем чего-то подобного в контроллере:
public ActionResult MyAction()
{
if (Request.IsAjaxRequest())
{
//do something here
}
//do something else here
}
Но на самом деле это моя проблема. Я не хочу вызывать какое-то частичное представление с помощью этого вызова. Я просто хочу вернуть некоторую строку в моем диапазоне, и мне интересно, можно ли это сделать без использования дополнительных частичных представлений.
Я хочу использовать простую функцию, которая будет возвращать только строку.
Комментарии:
1. Измените
$("#ajaxtest").html(resp);
на$("#ajaxtest").text(resp);
. Кроме того, добавьте adebugger;
в функцию успеха, чтобы проверить данные, которые вы получаете с сервера.
Ответ №1:
Измените тип данных: ‘string’ на тип данных: ‘text’
<script>
$(document).ready(function () {
$(".btn").click(function () {
$.ajax({
method: "get",
cache: false,
url: "/login/MyAction",
dataType: 'text',
success: function (resp) {
$("#ajaxtest").html(resp);
}
});
});
});
</script>
Я проверяю его на своем локальном, он будет работать для меня
Комментарии:
1. Это был ответ, который я собирался опубликовать, и он правильный.