Я пытаюсь начать работу с вызовами ASP.NET MVC Ajax.
контроллер:
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
public ActionResult Index()
{
return View();
}
public ActionResult FirstAjax()
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
Посмотреть:
<head runat="server">
<title>FirstAjax</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var serviceURL = '/AjaxTest/FirstAjax';
$.ajax({
type: "POST",
url: serviceURL,
data: param = "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
});
</script>
</head>
Мне просто нужно распечатать предупреждение с методом контроллера, возвращающим данные. На мой взгляд, над кодом просто напечатайте «чамара». Предупреждение не срабатывает.
ОБНОВИТЬ
Я изменил свой контроллер, как показано ниже, и он начал работать. У меня нет четкого представления, почему это сейчас работает. Кто-нибудь, пожалуйста, объясните. Параметр "a" не имеет отношения, я добавил его, потому что я не могу добавить два метода с одинаковым именем и параметрами метода. Я думаю, что это может быть не решение, а его работа
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
[HttpGet]
public ActionResult FirstAjax()
{
return View();
}
[HttpPost]
public ActionResult FirstAjax(string a)
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
c#
jquery
asp.net
asp.net-mvc
asp.net-mvc-2
Chamara
источник
источник
{"name":"chamara"}
. тогда попробуйте прочитать какdata['name']
Ответы:
После того, как вы сделали обновление,
Раньше вы возвращали в браузер только JSON без рендеринга HTML. Теперь у него есть HTML-представление, в котором можно получить ваши данные JSON.
Вы не можете напрямую отображать JSON его простые данные, а не HTML.
источник
Удалите атрибут данных, поскольку вы
POSTING
ничего не значите для сервера (ваш контроллер не ожидает никаких параметров).И в вашем методе AJAX вы можете использовать
Razor
и использовать@Url.Action
вместо статической строки:Из вашего обновления:
источник
Используйте Razor для динамического изменения URL-адреса, вызывая свое действие следующим образом:
источник
Во-первых, нет необходимости иметь две разные версии библиотек jquery на одной странице, для работы вызовов ajax достаточно "1.9.1" или "2.0.0".
Вот код вашего контроллера:
Вот как должно выглядеть ваше представление:
источник
Если вам просто нужно нажать C # Method в своем вызове Ajax, вам просто нужно передать два типа вопроса и URL-адрес, если ваш запрос получен, тогда вам просто нужно указать только URL-адрес. пожалуйста, следуйте приведенному ниже коду, он работает нормально.
Код C #:
Код Java Script при получении запроса
Код Java Script при отправке запроса, а также [HttpGet] в [HttpPost]
Примечание. Если вы используете FirstAjax в том же контроллере, в котором находится ваш контроллер представления, то имя контроллера в URL-адресе не требуется. лайк
url: 'FirstAjax',
источник
Это для вашего вопроса ОБНОВЛЕНИЕ.
Поскольку у вас не может быть двух методов с одинаковым именем и подписью, вы должны использовать атрибут ActionName:
ОБНОВИТЬ:
И перейдите по этой ссылке, чтобы узнать, как метод становится действием. Хотя очень хорошая ссылка.
источник
Посмотреть;
Метод контроллера;
источник
вместо
url: serviceURL,
использованияи вы передаете 2 параметра в successFunc?
источник
Добавьте "JsonValueProviderFactory" в global.asax:
источник