#jquery #asp.net-mvc #json
#jquery #asp.net-mvc #json
Вопрос:
Я пытаюсь вернуть объект JSON с помощью вызова ajax, но не могу. Я не понимаю, что я здесь делаю не так. Вот мой контроллер:
public class RandomController : Controller
{
public ActionResult Index()
{
return View();
}
/// <summary>
/// Returns a JSON representation of a Content corresponding to the content ID passed in.
/// </summary>
/// <returns></returns>
public JsonResult GetStuff()
{
string x = "testing";
return Json(x, JsonRequestBehavior.AllowGet);
}
}
и вот мой запрос ajax:
$(document).ready(function () {
$('#randombtn').click(function () {
$.ajax({
url: '/Random/GetStuff/',
success: function (data) {
alert(data);
}
});
});
});
и моя кнопка:
<input id="randombtn" type="button" value="Testing" />
Ничего не происходит, когда я нажимаю кнопку.
Комментарии:
1. выполняется вызов ajax, вы видели консоль??
Ответ №1:
вы должны указать URL таким образом, используя @Url.Action()
helper для генерации правильного URL из контроллера и имени действия для генерации правильного URL:
$('#randombtn').click(function () {
$.ajax({
url: '@Url.Action("GetStuff","Random")',
success: function (data) {
alert(data);
}
});
Когда вы вводите /Random/GetStuff, он всегда будет искать этот URL для имени действия. но использование @Url.Action()
сгенерирует правильный URL, где бы вам ни понадобился URL, вы можете использовать это, чтобы получить правильный URL.
Подробности см. в документах MSDN
Ответ №2:
$('#randombtn').click(function () {
$.getJSON("/Random/GetStuff",function(data){
alert(data);
});
});
Попробуйте вышеуказанное
Комментарии:
1. по какой-то причине это сработало. Спасибо. Есть идеи, почему .ajax не работает?
2. @SKLAK никогда не кодируйте свой URL подобным образом смотрите мой пост, надеюсь, это поможет, при развертывании приложения в режиме реального времени, что вы будете делать, вам нужно заменить все места localhost на domain, поэтому правильный способ — использовать
@Url.Action()
helper