Próbuję rozpocząć korzystanie z wywołań ASP.NET MVC Ajax.
Kontroler:
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
public ActionResult Index()
{
return View();
}
public ActionResult FirstAjax()
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
Widok:
<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>
Muszę tylko wydrukować alert z metodą kontrolera zwracającą dane. Powyższy kod wydaje mi się po prostu "chamara". Alert nie działa.
AKTUALIZACJA
Zmodyfikowałem kontroler jak poniżej i zaczyna działać. Nie mam jasnego pojęcia, dlaczego teraz działa. Niech ktoś wyjaśni. Parametr "a" nie jest powiązany Dodałem go, ponieważ nie mogę dodać dwóch metod o tej samej nazwie metody i parametrach. Myślę, że to może nie być rozwiązanie, ale dział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
źródło
źródło
{"name":"chamara"}
. następnie spróbuj czytać jakodata['name']
Odpowiedzi:
Po zakończeniu aktualizacji
Wcześniej zwracałeś tylko JSON do przeglądarki bez renderowania kodu HTML. Teraz ma wyrenderowany widok HTML, w którym może pobrać dane JSON.
Nie możesz bezpośrednio renderować JSON jako zwykłych danych, a nie HTML.
źródło
Usuń atrybut data, ponieważ nie jesteś
POSTING
niczym dla serwera (Twój kontroler nie oczekuje żadnych parametrów).W swojej metodzie AJAX możesz używać
Razor
i używać@Url.Action
zamiast statycznego ciągu:Z Twojej aktualizacji:
źródło
Użyj narzędzia Razor, aby dynamicznie zmienić adres URL, wywołując akcję w ten sposób:
źródło
Po pierwsze, nie ma potrzeby posiadania dwóch różnych wersji bibliotek jquery na jednej stronie, albo „1.9.1”, albo „2.0.0” jest wystarczające, aby wywołać Ajax działało.
Oto kod twojego kontrolera:
Oto jak powinien wyglądać Twój widok:
źródło
Jeśli potrzebujesz tylko nacisnąć metodę C # w swoim wywołaniu Ajax, wystarczy przekazać dwa typy sprawy i adres URL, jeśli żądanie zostanie odebrane, wystarczy podać tylko adres URL. proszę postępować zgodnie z kodem poniżej, działa dobrze.
Kod C #:
Kod skryptu Java w przypadku żądania żądania
Kod skryptu Java w przypadku żądania wysłania, a także [HttpGet] do [HttpPost]
Uwaga: Jeśli korzystasz z FirstAjax w tym samym kontrolerze, w którym znajduje się kontroler widoku, nie ma potrzeby podawania nazwy kontrolera w adresie URL. lubić
url: 'FirstAjax',
źródło
To dla twojego pytania UPDATE.
Ponieważ nie możesz mieć dwóch metod o tej samej nazwie i podpisie, musisz użyć atrybutu ActionName:
AKTUALIZACJA:
I proszę odnieść się do tego linku, aby uzyskać dalsze informacje o tym, jak metoda staje się działaniem. Bardzo dobre odniesienie.
źródło
Widok;
Metoda kontrolera;
źródło
zamiast
url: serviceURL,
używaći czy przekazujesz 2 parametry do successFunc?
źródło
Dodaj „JsonValueProviderFactory” w global.asax:
źródło