СинтаксисError: недопустимый флаг регулярного выражения ajax, Javascript
Это мой контроллер,
public ActionResult ReturnMethodTest(int id)
{
string name = "John";
return Json( new {data=name});
}
Я пытаюсь получить данные с этого контроллера, используя код ниже, но я получаю
.
Не могли бы вы рассказать мне, что я делаю неправильно?
$.ajax({
url: @Url.Action("ReturnMethodTest", "HomeController"),
data: {
id: 5,
},
success: function (data) {
console.log(data);
}
});
Ответы
Ответ 1
@Url.Action
возвращает строку url действия без кавычек вокруг нее.
Вам нужно будет обернуть этот URL в кавычки.
Заменить:
url: @Url.Action("ReturnMethodTest", "HomeController"),
С
url: '@Url.Action("ReturnMethodTest", "HomeController")',
// ^ ^
В противном случае файл, возвращенный клиенту, будет содержать:
url: /HomeController/ReturnMethodTest,
Какой недопустимый JS, и что вы хотите. Замена дает следующий результат:
url: '/HomeController/ReturnMethodTest',
Что представляет собой вполне допустимую строку JavaScript.
Ответ 2
Удалите суффикс Controller
, указав в url
.
Попробуйте так:
url: '@Url.Action("ReturnMethodTest", "Home")'
Ответ 3
Литерал регулярного выражения Javascript выглядит следующим образом - шаблон, заключенный между косыми чертами:
var re = /pattern/flags;
Если вы интерполируете переменную, которая начинается с косой черты, но не ставите кавычки вокруг нее, она будет интерпретироваться как регулярное выражение, а не строка. В другой раз это происходит с языком выражений JSP, где вы должны написать первое, а не второе:
var spinner = "<img src='${contextPath}/images/ajax-loader-small.gif'>"
var spinner = "<img src='" + ${contextPath} + "/images/ajax-loader-small.gif'>"
Ответ 4
<a href='@Url.Action("action","controller", new { paramname = paramvalue })'>xx</a>