Успех Ajax при возврате представления - PullRequest
1 голос
/ 02 марта 2012

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

Это мой текущий код:

(Контроллер)

    [HttpPost]
    public ActionResult AjaxTestController(string Input)
    {
        string Results = Input + " -- TestTestTest";

        return PartialView("Test", Results);
        //return new JsonResult() { };
    }

(Просмотреть)

function AjaxTest() {
alert("test");
$.ajax({
    type: "POST",
    url: "Home/AjaxTestController",
    data: "Input=Test11111",        
    success: function () {
        alert("Success!");
    }
});

Спасибо!

Ответы [ 3 ]

0 голосов
/ 02 марта 2012

попробуйте следующее:

$(function () {
    $('#submit').live('click', function () {
        AjaxTest();
    });
});

function AjaxTest() {
    $.ajax({
        type: "POST",
        url: '@Url.Action("AjaxTestController", "Home")',
        data: { Input: "Test - " + new Date() },
        success: function (data) {
            $('#partialResult').html(data);
        },
        error: function (xhr, err) {
            alert(xhr.responseText);
        }
    });
};

в вашем представлении и убедитесь, что у вас есть целевой div, настроенный для партиала, который будет заполнен:

<div id="partialResult"></div>

также дляВ приведенном выше примере я добавил кнопку в представление для запуска ajax (исключительно для тестирования):

<input type="button" value="Submit" id="submit" />

ваше «частичное представление» должно выглядеть примерно так:

@model string
<h2>
    Partial Test</h2>
<p>
    @Model
</p>

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

[ОБНОВЛЕНИЕ] - Я изменил метод AjaxTest(), включив в него событие ошибки (результат которого захватываетсяв тревоге).надеюсь, это может помочь в дальнейшем.

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

частичное представление отличается от вида, вам необходимо указать полный путь к частичному виду или иметь его в общей папкев противном случае вернется не найден и никогда не удастся.В любом случае это всегда работает для меня, попробуйте

partialView("~/Views/ControllerView/Test.cshtml")
0 голосов
/ 02 марта 2012

Для этого вы можете использовать команду $ .post:

function AjaxTest() {
alert("test");
$.post({
    url: "Home/AjaxTestController",
    data: "Input=Test11111",        
    success: function (response) {
        alert(response);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...