Member 12658724 Ответов: 1

Uncaught syntaxerror: недопустимый или неожиданный токен


Я не могу этого понять.
var path = '@Url.Action("index","Survey")?id='
           + @Model.MyGuid+'&languageName=' +selectedValue;
       alert(path.val());

Получите ошибку в качестве заголовка.
Uncaught SyntaxError: Invalid or unexpected token


РЕДАКТИРОВАТЬ:
Действие в контроллере:
public ActionResult Index(Guid id, string languageName)
       {


Что я уже пробовал:

Если мы изменим параметры ордера и используем двойные кавычки. Тогда ошибка исчезла.
var t = "@Url.Action("index","Survey")?languageName="
                 + selectedValue +"&id=@Model.MyGuid";

[no name]

Где ваш метод контроллера? где вы ловите эту строку запроса? Может быть, есть какая-то проблема. Пожалуйста, также опубликуйте этот метод, а затем мы визуализируем его, взяв все сценарии.

Member 12658724

Добавлен метод контроллера

1 Ответов

Рейтинг:
8

F-ES Sitecore

Это ошибка javascript, и javascript запускает то, что отправляется в браузер (а не то, что находится в вашем файле cshtml), поэтому посмотрите на источник страницы.

var path = '@Url.Action("index","Survey")?id='
           + @Model.MyGuid+'&languageName=' +selectedValue;
       alert(path.val());


Все вышесказанное будет выглядеть примерно так

var path = '/Survey/index?id='
           + {6AAE15E3-E702-4251-A6F1-2A27EBBAA4A0}+'&languageName=' +selectedValue;
       alert(path.val());


Является ли это допустимым javascript? Нет. Когда он добирается до "+ { " , он думает, что {- это кодовый блок. Теперь посмотрите на ваш рабочий пример

var t = "@Url.Action("index","Survey")?languageName="
                 + selectedValue +"&id=@Model.MyGuid";


Посмотрите на источник, и он будет похож

var t = "/Survey/index?languageName="
                 + selectedValue +"&id={6AAE15E3-E702-4251-A6F1-2A27EBBAA4A0}";


Это действительно так? Да. "{ } "Находится внутри строкового блока (он имеет кавычки вокруг него), поэтому он знает, что это литеральная строка, а не кодовый блок.

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


Member 12658724

MyGuid отображает результат как 6AAE15E3-E702-4251-A6F1-2A27EBBAA4A0
Никаких{} вокруг него.

F-ES Sitecore

Как я уже сказал, тот факт, что у вас есть GUID вне цитаты, все еще остается проблемой. Это может выглядеть как присвоение переменной в вашем файле cshtml, но вы должны понимать, что это не присвоение переменной, а просто генерация js для визуализации и выполнения на клиенте.

Member 12658724

Окей. Мой фактический url-адрес нравится:
http://localhost:17671/Survey/6AAE15E3-E702-4251-A6F1-2A27EBBAA4A0?languageName=English&id=6AAE15E3-E702-4251-A6F1-2A27EBBAA4A0.
Что должно быть?
Это http://localhost:17671/Survey/{6AAE15E3-E702-4251-A6F1-2A27EBBAA4A0}?languageName=English&id={6AAE15E3-E702-4251-A6F1-2A27EBBAA4A0}.
Я хочу добавить { }к url-адресу.

Richard Deeming

Любой:

var path = '@Url.Action("index", "Survey")?id=@Model.MyGuid&languageName=' + encodeURIComponent(selectedValue);

Или:
var path = '@Url.Action("index", "Survey", new { id = Model.MyGuid })&languageName=' + encodeURIComponent(selectedValue);

Member 12658724

синтаксический анализ содержимого метаэлемента: ';' не является допустимым разделителем пар ключ-значение. Пожалуйста, используйте вместо этого ','

Richard Deeming

Это больше похоже на ошибку в вашем CSS, чем на проблему с Javascript.

Member 12658724

Ваш первый код работает, а второй-нет.

Richard Deeming

Так что используйте первый. :)