Передача переменных в вызове JavaScript ajax

#javascript #ajax #asp.net-mvc-4

#javascript #ajax #asp.net-mvc-4

Вопрос:

У меня есть тестовое представление, которое выполняет вызов ajax для тестового контроллера. Проблема, с которой я сталкиваюсь, заключается в доступе к переменным для отправки на контроллер. Вот мой код:

         $.ajax({
            type: "GET",
            url: "@Url.Action("Copy", "Test")",
            data: { folderName: @ViewBag.SampleProjectName },
            success: function (returnData) {
                if (!returnData) {
                    return;
                }
            },
            error: function () {
                return;
            }
        });
  

Выполнение этого кода приводит к ошибке времени выполнения, указывающей, что «Обработка файлов» не определена.

Я считаю, что происходит то, что значение не передается в виде строки

Я говорю это, потому что, если я жестко запрограммирую значение в виде строки, оно сработает:

             data: { folderName: "FileHandling" },
  

Как я могу получить доступ к параметру строки запроса или свойству ViewBag для передачи в качестве folderName?

Комментарии:

1. Расставьте метки @ViewBag.SampleProjectName запроса, как вы делали с "@Url.Action("Copy", "Test")"

2. Пожалуйста, добавьте к тегам MVC-фреймворк, который вы используете. Все эти @ вещи не являются Javascript.

3. Посмотрите на сгенерированный исходный код.

Ответ №1:

Я думаю, это потому, что вам не хватает кавычек.

Итак, ваш код должен быть: data: { folderName: "@ViewBag.SampleProjectName" },

В конце концов, когда вы заключаете url в кавычки, почему бы и нет folderName ?

Комментарии:

1. Я думал, что помещение моей переменной в кавычки передаст литерал «@ViewBag. SampleProjectName» вместо его значения.

2. @StraxTillbaka Но вы тоже передаете @url... кавычки. Почему он должен вести себя по-другому?

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