2011-09-21 3 views
0

После прочтения некоторой информации я думал, что это должно сработать. Вызывается функция JS и анимация jQuery вращается, но действие не отправляется. Кроме того, я хочу, чтобы startDate и endDate были предоставлены из текстовых входов, но пока даже жестко закодированные не работают. Всем спасибо!Публикация на контроллер с jQuery

Контроллер:

public class NewsController : Controller 
{ 
    [HttpPost] 
    public ActionResult Search(string lang, string pageNumber, string startDate, string endDate, string search) 
    { 
    } 
} 

Вид:

@using (Html.BeginForm()) 
{ 
    <a href="#" id="go_button">...</a> 
} 
<script type="text/javascript"> 
$('#go_button').click(function() { 
     $.post("/News/Search", { startDate: 'start', endDate: 'end'}); 
}); 

+1

Итак, действие контроллера никогда не вызывается, если вы положили в него точку останова? Что происходит, когда вы смотрите с FireBug? Вы можете видеть, что запрос AJAX отправляется вообще? –

+0

Откажитесь от Firebug и посмотрите, действительно ли он пытается POST или нет. Таким образом, вы узнаете, есть ли это на клиенте или на сервере (надеюсь) – Dave

+0

@DarinDimitrov рад, что мы на одной странице:) – Dave

ответ

0

Убедитесь, что скрипт либо находится после того, как якорь в DOM или завернуть в document.ready:

$(function() { 
    $('#go_button').click(function() { 
     var url = '@Url.Action("Search", "News")'; 
     $.post(url, { startDate: 'start', endDate: 'end' }, function() { 
      alert('success'); 
     }); 
     return false; 
    }); 
}); 

Это должно работать, по крайней мере, оно должно вызывать ваше действие. Что это действие делает, бросает ли это исключение или что-то другое дело, но, по крайней мере, вы должны войти в него и имеют параметры startDate и endDate правильно присвоенные:

public class NewsController : Controller 
{ 
    [HttpPost] 
    public ActionResult Search(string lang, string pageNumber, string startDate, string endDate, string search) 
    { 
     return Json(new { success = true }); 
    } 
} 
+0

Подойдя ближе, спасибо. Теперь действие вызывается, но если я удалю функцию обратного вызова, она не будет вызвана. Также мой контроллер должен вернуть представление «return View()»; и он не сделает этого сейчас. Какие-либо предложения ? – mishap

+0

@Chuchelo, вещь с удалением функции обратного вызова кажется очень странной. Оформить заказ с помощью панели инструментов FireBug или Chrome, чтобы узнать, отправляется ли запрос AJAX при удалении обратного вызова. Если вы хотите вернуть представление, тогда продолжайте, но затем убедитесь, что у вас есть обратный вызов успеха, чтобы сделать что-то полезное с результатом, например, например, ввести его в DOM, в противном случае ваш запрос AJAX действительно не имеет никакой цели. –

+0

Прошу прощения за все эти вопросы, но я новичок. Таким образом, функция обратного вызова успеха будет вставлять представление в DOM? Если представление содержит полностью новую страницу, как я могу очистить текущий элемент DOM (элемент документа) и вставить в него View html? Я делаю все это, потому что разные кнопки будут вызывать разные действия, иначе я бы использовал @@ using (Html.BeginForm (имя_контроллера)). Большое спасибо! – mishap

0

$ .post будет отправлять только запрос сервер - он автоматически не обновит вашу страницу с вашим видом.

Вам необходимо включить функцию успеха, которую вы затем используете для вставки представления в DOM.

например.

попробовать что-то подобное в JQuery

$(function() { 
    $('#go_button').click(function() { 
     var url = '@Url.Action("Search", "News")'; 
     $.post(url, { startDate: 'start', endDate: 'end' }, function() { 
      $('#result').html(data); 
     }); 
     return false; 
    }); 
}); 

Это вывесит к вашей акции и положить возвращаемый вид внутри элемента с идентификатором «результат».

Вы должны вернуть свое действие PartialView, если вы не планируете его включать.

+0

Спасибо, я уже это понял, но можно ли вернуть возвращаемый результат в элемент документа, чтобы я мог отображать весь вид вместо частичного. Кстати, исходная проблема, с которой я борюсь, - это http://stackoverflow.com/questions/7508233/posting-same-form-to-different-actions-depending-on-button-clicked, не уверен, могу ли я попросите взглянуть, но откуда эти вопросы пришли. Большое спасибо за вашу помощь! – mishap

Смежные вопросы