【问题标题】:This JS code works properly in the .cshtml file, but not working in .js file(external javascript file)此 JS 代码在 .cshtml 文件中正常工作,但在 .js 文件(外部 javascript 文件)中无法正常工作
【发布时间】:2020-04-05 01:35:48
【问题描述】:

此 JS 代码在 .cshtml 文件中正常工作,但在 .js 文件(外部 javascript 文件)中无法正常工作。谁能帮我?我也在尝试使用 Ajax GET 但也不能在 js 文件中工作

[Area("Administrator")]
[Authorize(Roles = "Administrator")]
public class HomeController : Controller
{
    private readonly ApplicationDbContext _context;

    public HomeController(ApplicationDbContext context)
    {
        _context = context;
    }

    public JsonResult EarningChart()
    {
        var earning = _context.Orders.Where(o => o.Status == OrderStatus.Completed).ToList();
        return Json (earning);
    }

 <script type="text/javascript">
$(function () {
    //ajax function for fetch data
    $.ajax({
        type: "GET",
        url: '@Url.Action("EarningChart","Home",new { area ="Administrator"})',
        success: function (data) {
            alert('succeed');
        },
        error: function () {
            alert('Failed');
        }
    });
});
    </script>

【问题讨论】:

  • 这不是 Javascript。它是 C#。这就是为什么它在 .js 文件中不起作用的原因 :)

标签: javascript asp.net-core json.net asp.net-core-3.0 jsonresult


【解决方案1】:

@Url.Action() 是剃须刀(服务器端)代码,不能在 .js 文件中使用。您可以在主页中添加一个隐藏字段来存储 url,然后使用 javascript/jquery 从隐藏中获取 url .js 文件中的字段:

@Html.Hidden("MyURL", Url.Action("EarningChart","Home",,new { area ="Administrator"}))

然后在你的js文件中:

<script type="text/javascript">
    $(function () {

        var myUrl = $("#MyURL").val();
        //ajax function for fetch data
        $.ajax({
            type: "GET",
            url: myUrl,
            success: function (data) {
                alert('succeed');
            },
            error: function () {
                alert('Failed');
            }
        });
    });
</script>

【讨论】:

    【解决方案2】:

    你没有显示任何 js 文件或任何 cshtml 文件

    从你的 cmets 我看到你有:

    <script type="text/javascript"> $(function () { //ajax function for fetch data $.ajax({ type: "GET", url: '@Url.Action("EarningChart","Home",new { area ="Administrator"})', success: function (data) { alert('succeed'); }, error: function () { alert('failed'); } }); }); </script>
    

    我假设您的问题是,如果您的 cshtml 文件中有上述代码,它可以工作,但如果您在单独的 js 文件中有上述代码,它就不起作用

    为了包含您的 js 文件,您需要将其包含在您的 cshtml 页面中,如下所示:

    <script src="yourJsFilePathHere"></script>
    

    【讨论】:

    • 亲爱的,我在几分钟前的帖子中得到了 js 代码。我已经直接在cshtml中使用了这个js。它正在工作。但我正在尝试在 javascript 文件中使用此代码并将该脚本文件链接到 cshtml 中,但无法正常工作
    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    相关资源
    最近更新 更多