Javascript仅在外部文件中失败

Wil*_*lky 1 javascript jquery asp.net-mvc-3

任何人都可以告诉我为什么我在第二行上出现错误,说'意外字符串',但是当我直接在我的视图上时它正常工作(我使用的是MVC 3,而不是它有所不同):

function getUsers(processId) {
    $.ajax({
        url: "@Url.Action('GetProcessApprovers', 'Risk')",
        data: { processId: processId },
        dataType: "json",
        type: "POST",
        error: function () {
            alert("An error occurred.");
        },
        success: function (data) {
            var items = "<option value=\"\">-- Please select --</option>"

            if (data != "") {
                $.each(data, function (i, item) {
                    items += "<option value=\"" + item.Value + "\">" + item.Text + "</option>";
                });
            }

            $("#ProcessOwnerId").html(items);
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

Jam*_*xon 5

因为你的url: "@Url.Action('GetProcessApprovers', 'Risk')",只在视图的上下文中执行,而不是在外部JS文件中执行.这是剃刀代码.

您需要以其他方式将URL传递给Javascript,可能作为函数的参数.

getUsers(processId, ajaxUrl)
Run Code Online (Sandbox Code Playgroud)

另一种方法是将HtmlHelper中的url写入视图中的数据属性,然后在Javascript中将其选中.

HTML

<div id="someContainer" data-url="@Url.Action('GetProcessApprovers', 'Risk')">...
Run Code Online (Sandbox Code Playgroud)

JS

var url = $("#someContainer").attr("data-url");