Страница не перенаправляет на представление после успешного вызова метода Jquery Ajay - PullRequest
0 голосов
/ 11 декабря 2018

Я использую jquery ajax-метод для вызова контроллера из представления.Метод действия контроллера успешно вызван, он извлекает данные из базы данных и отображает данные в соответствующем представлении, но в конце представление не генерирует свое отображение того же представления.

Вот мой код Jquery длявызовите метод действия.

<script type="text/javascript">
        $(document).ready(function () {
            $('#btn_Search').click(function (e) {
                var category = $("#ddl_Category option:selected").text();
                var location = $('#txtSource').val();
                $.ajax({
                    url: "/Classified/GlobalSearch",
                    type: 'GET',
                    data: { searchcategory: category, Location: location },

                    success: function (data) {
                        alert("Hi");
                    },
                });
            });

     });
</script>

Он вызвал этот метод действия.

public ActionResult GlobalSearch(string searchcategory,string Location)
{
   //Connect to db and fetch data in form of List
   return View(list);
}

В конце данные также устанавливаются в представлении глобального поиска.Но представление не приходит.

Чтобы проверить успешность звонка, я отправил приветственное сообщение:

enter image description here

Может кто-нибудьподскажите пожалуйста что нужно поменять?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Как упоминалось ранее @HereticMonkey, обратный вызов AJAX предназначен для того, чтобы оставаться на той же странице, загружая частичные представления.Если вы хотите перенаправить на другую страницу из сценария на стороне клиента, необходимо использовать location.href, назначенный с предполагаемой строкой URL, без использования AJAX вообще:

$(document).ready(function () {
    $('#btn_Search').click(function (e) {
        var category = $("#ddl_Category option:selected").text();
        var location = $('#txtSource').val();

        window.location.href = '@Url.Action("GlobalSearch", "Classified")' + '?searchcategory=' + category + '&Location=' + location;
    });
});

Другой способ сделать перенаправление - использовать обычныйотправьте форму (с POST методом) и используйте RedirectToAction, содержащий параметры маршрута из серверных переменных:

// POST controller action example

string category = "somecategory";
string location = "somelocation";

return RedirectToAction("GlobalSearch", "Classified", new { searchcategory = category, Location = location });

Но если вы хотите загрузить частичное представление на той же странице с помощью AJAX, просто замените return View() с return PartialView():

public ActionResult GlobalSearch(string searchcategory, string Location)
{
   //Connect to db and fetch data in form of List
   return PartialView(list);
}

Затем используйте функцию html() для частичного отображения содержимого в целевом элементе HTML:

$('#btn_Search').click(function (e) {
    var category = $("#ddl_Category option:selected").text();
    var location = $('#txtSource').val();
    $.ajax({
        url: "/Classified/GlobalSearch",
        type: 'GET',
        data: { searchcategory: category, Location: location },

        success: function (data) {
            alert("Hi");
            $('#targetElement').html(data); // show partial view content to target element
        },
        // other stuff
    });
});
0 голосов
/ 11 декабря 2018

Попробуйте это:

$.ajax({
url: "/Classified/GlobalSearch",
type: 'GET',
data: { searchcategory: category, Location: location },
success: function (data) {
    alert("Hi");
    window.location.href = "/page/xyz"; // Try this line after alert.
},
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...