Получение переменной Ajax после параметра успеха - PullRequest
0 голосов
/ 04 февраля 2019

Вот мой код Ajax:

       $("#generateImage").click(function () {
        var url = $(this).data('url');
       var currentUrl =window.location.href;
        $.ajax({
            type: "post",
            contentType: "application/json; charset=utf-8",
            url: url,
            data: "{'urlVar':'"+ currentUrl +"','mywidth':'250','myheight':'480'}",
            success: function (response) {
                if (response != null && response.success) {
                    alert("Success");
                  window.location = '@Url.Action("GetData", "MyController", new { urlVar = currentUrl })';
                } else {

                    alert("Failed");

                }
            },

        });

В этой части кода:

new { urlVar = currentUrl })';

currentUrl говорит:

Не существует в текущемcontext;

Мой вопрос: как сделать currentUrl действительным в этом конкретном месте?

Иначе нет ошибки в data: части?data: "{'urlVar':'"+ currentUrl

1 Ответ

0 голосов
/ 04 февраля 2019

Проблема currentUrl определена как переменная на стороне клиента в этой строке:

var currentUrl = window.location.href;

Обратите внимание, что @Url.Action() помощник выполняется на стороне сервера, вы не можете использовать currentUrl переменную на стороне клиентавнутри него как параметр действия (он не существует как переменная на стороне сервера).Вам нужно использовать строку запроса, подобную этой, чтобы перенаправить в GetData метод действия:

if (response != null && response.success) {
    alert("Success");

    // use query string here
    window.location = '@Url.Action("GetData", "MyController")?urlVar=' + currentUrl;
}

Если вы хотите получить URL-адрес со стороны сервера, измените ваш помощник Url.Action, включив либо Request.Url,Request.RawUrl или Request.Url.AbsoluteUri:

// alternative 1
window.location = '@Url.Action("GetData", "MyController", new { urlVar = Request.Url.AbsoluteUri })';

// alternative 2
window.location = '@Url.Action("GetData", "MyController", new { urlVar = Request.Url.ToString() })';

Обновление:

Для нескольких параметров можно использовать любой из параметров строки запроса:

window.location = '@Url.Action("GetData", "MyController")?urlVar=' + currentUrl + '&width=' + varwidthvalue + '&height=' + varheightvalue;

Или, если varwidthvalue и varheightvalue являются переменными на стороне сервера, просто используйте эту:

window.location = '@Url.Action("GetData", "MyController", new { urlVar = Request.Url.ToString(), width = varwidthvalue, height = varheightvalue })';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...