Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC не всегда работает вызов $.post() на странице. / 18 сообщений из 18, страница 1 из 1
08.07.2014, 18:37
    #38691001
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Есть проблема: один и тот же код:

JQuery
$("#btn1").click(function () {
$.post('Log');
});

работает в представлении Index, но не работает в представлении Detail. То есть в Detail при нажатии btn1 вызов $.post не срабатывает. А в Index срабатывает. Оба представления и метод Log находятся в одном и том же контроллере:

public void Log()
{
Util.Log("Log");
}

представления отличаются действиями:

public virtual ActionResult Index()
...
public virtual ActionResult Detail(int id)

Не пойму, что я не так делаю?
...
Рейтинг: 0 / 0
08.07.2014, 18:40
    #38691006
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
1) у Detail есть атрибут [HttpPost]?

2) параметр id в Detail передается? если сделать Detail(int? id) и посмотреть, чему равен id
...
Рейтинг: 0 / 0
08.07.2014, 19:12
    #38691043
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
1. У Detail нет [HttpPost] .
2. Параметр id в Detail передаётся (равен 1 хоть ставь int?).

Если поставить [HttpPost] для Log() то всё равно не работает. При тех же обстоятельствах не работает $.get().
...
Рейтинг: 0 / 0
08.07.2014, 20:04
    #38691084
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Вобщем, проверил на новом приложении где вообще ничего нет.

Если действие Detail не имеет входных параметров, то код

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#btn1").click(function() {
$.get('Log', function(result) {
alert(result);
});
});
});
</script>

отрабатывает без проблем. Если есть входные параметры Detail(int id), то вышеприведённый код не работает.
Бред какой-то.
...
Рейтинг: 0 / 0
08.07.2014, 23:19
    #38691206
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Что-то я перестал понимать, что у вас там не работает конкретно. Выложите тот самый чистый проект, чтобы долго не объяснять.
...
Рейтинг: 0 / 0
08.07.2014, 23:58
    #38691240
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Проект не получится приложить, рар минимум 2мб. Приложил файлы контроллера и вью.

В общем, всё просто. В контроллере Home есть действие Index(int id) . В представлении Index есть скрипт jquery, привязанный к кнопке. Скрипт вызывает Log() который пишет в файл. Если запустить
http://localhost:6879/Home/Index/ 1 и нажать на кнопку то ничего не происходит.

Если изменить действие Index и убрать входной параметр Index() то при вызове
http://localhost:6879/Home/Index
и нажатии на кнопку код выполняется, в Log.txt пишет строку и появляется alert с результатом.
...
Рейтинг: 0 / 0
09.07.2014, 01:11
    #38691278
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Ну не знаю.
Если исправить представление на
Код: javascript
1.
2.
3.
$.get('/Home/Log', function(result) {
alert(result);
 });

у меня все работает в обоих вариантах
...
Рейтинг: 0 / 0
09.07.2014, 01:22
    #38691280
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Shocker.Pro,

Спасибо, действительно заработало. Я как-то не допетрил добавить Home.
...
Рейтинг: 0 / 0
09.07.2014, 01:38
    #38691283
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Дык эта.
у вас никак не могло работать ни в каком варианте, этим вы ввели в заблуждение.
...
Рейтинг: 0 / 0
09.07.2014, 01:49
    #38691288
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Работало, без параметров работало.
...
Рейтинг: 0 / 0
09.07.2014, 01:55
    #38691290
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
значит у вас что-то в маршрутах прописано и т.п., почему я и просил весь проект

а вообще, во-первых для формирования url-ов нужно пользоваться UrlHelper (в представлении это @Html.ActionLink), во-вторых, метод контроллера все-таки должен возвращать ActionResult
...
Рейтинг: 0 / 0
09.07.2014, 23:54
    #38692512
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Что-то не понял. А где я там не использовал Html.ActionLink где должен был?
...
Рейтинг: 0 / 0
10.07.2014, 00:20
    #38692525
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
сорри, @Url.Action конечно же
...
Рейтинг: 0 / 0
10.07.2014, 00:30
    #38692532
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Всё равно непонятно. Где там дёргать Html.Action?

И почему метод контроллера обязательно должен возвращать ActionResult? А если мне в скрипте просто нужно дёрнуть метод проверки данных в бд и по результатам true/false принимать решение?
...
Рейтинг: 0 / 0
10.07.2014, 00:31
    #38692533
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
то есть я про @Url.Action
...
Рейтинг: 0 / 0
10.07.2014, 01:07
    #38692553
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
rigorMortisто есть я про @Url.Actionдык в том месте, где была ошибка в виде неправильного урла. @Url.Action как раз и предназначен для того, чтобы формировать правильный url. Нет, ну это, конечно, необязательно, если это вас так расстраивает. Просто, например, если вы вдруг заходите воспользоваться областями (Area), то не потребуется переписывать код представлений.

rigorMortisИ почему метод контроллера обязательно должен возвращать ActionResult?Да в общем-то тоже необязательно, тут я был излишне категоричен.
...
Рейтинг: 0 / 0
10.07.2014, 01:44
    #38692571
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Ну а в моём случае, когда url используется в вызове .post. Вы предлагаете сделать что-то вроде

<a href="@Url.Action("Log","Home")" id="ref"></a>

и потом в вызове

<a href="@Url.Action("Log","Home")" id="ref1"></a>


$.get($("#ref1").attr("href"), function (result) {
alert(result);
});


так что ли?
...
Рейтинг: 0 / 0
10.07.2014, 02:17
    #38692582
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC не всегда работает вызов $.post() на странице.
Не-не. Action возвращает урл (а не тэг <a>), то есть можно было бы использовать его внутри get в качестве урл-а
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC не всегда работает вызов $.post() на странице. / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]