【问题标题】:How can I write to the browser console in MVC?如何在 MVC 中写入浏览器控制台?
【发布时间】:2020-10-29 17:01:18
【问题描述】:

我正在尝试让下面的课程正常工作,但是我继续收到一条错误消息说明

alert!parsererrorSyntaxError: 位置 0/Home/onPremTest{"msg":"onPremTest message"}

中 JSON 中的意外标记

脚本结束标记中的开始符号似乎导致了此消息。有谁知道如何格式化它以便浏览器接受 javascript 代码并执行它?

public class Javascript {
  static string scriptTag = "<script type=\"\" language=\"\">{0}</script>";
  public static void ConsoleLog(string message) {
    string function = "console.log('{0}');";
    string log = string.Format(GenerateCodeFromFunction(function), message);
    //System.Web.HttpContext.Current.Response.Write("<script>alert('Test message !'); </script>");
    System.Web.HttpContext.Current.Response.Write(log);    
  }

  public static void ConsoleError(string message) {
    string function = "console.error('{0}');";
    string log = string.Format(GenerateCodeFromFunction(function), message);
    Page page = HttpContext.Current.Handler as Page;
    if (ScriptManager.GetCurrent(page).IsInAsyncPostBack) {
      ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "error", "console.error('" + message + "')", true);
    } else {
      HttpContext.Current.Response.Write(log);
    }
  }

  public static void Alert(string message) {
    string function = "alert('{0}');";
    string log = string.Format(GenerateCodeFromFunction(function), message);
    Page page = HttpContext.Current.Handler as Page;
    if (ScriptManager.GetCurrent(page).IsInAsyncPostBack) {
      ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "alert", "alert('" + message + "')", true);
    } else {
      HttpContext.Current.Response.Write(log);
    }
  }

  static string GenerateCodeFromFunction(string function) {
    return string.Format(scriptTag, function);
  }
}

【问题讨论】:

  • 这两个错误并不相同,尽管都抱怨 <.>in JSON.
  • 我删除了文本,谢谢。 JSON可以没有尖括号吗?另外,如何从 MVC 写入浏览器控制台?
  • 您能否进一步说明您期望什么样的互动?是一次性的console.log 还是您希望能够通过SignalR 之类的方式不断推送事件?
  • 我差点称这是stackoverflow.com/questions/14713782的副本,但后来我看了一下代码,是其中一个答案的副本,也许原作者会知道?

标签: javascript c# html asp.net-mvc


【解决方案1】:

该错误意味着您的一个开始标签存在问题。也可能是别的东西,但这是我迄今为止所经历的。

// this create that error.
<div something </div>

// so add ">" after div
<div> something </div>

【讨论】:

    【解决方案2】:

    GenerateCodeFromFunction 中的function 应该使用'" 来表示字符串(首选")。所以我稍微改变了你所有的方法:

     public class Javascript
        {
            static string scriptTag = "<script type='javascript' >{0}</script>";
            public static void ConsoleLog(string message)
            {
                string function = "console.log(\"{0}\");";
                string log = string.Format(GenerateCodeFromFunction(function), message);
              
                System.Web.HttpContext.Current.Response.Write(log);
            }
    
            public static void ConsoleError(string message)
            {
                string function = "console.error(\"{0}\");";
                string log = string.Format(GenerateCodeFromFunction(function), message);
                Page page = HttpContext.Current.Handler as Page;
                if (ScriptManager.GetCurrent(page).IsInAsyncPostBack)
                {
                    ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "error", "console.error('" + message + "')", true);
                }
                else
                {
                    HttpContext.Current.Response.Write(log);
                }
            }
    
            public static void Alert(string message)
            {
                string function = "alert(\"{0}\");";
                string log = string.Format(GenerateCodeFromFunction(function), message);
                Page page = HttpContext.Current.Handler as Page;
                if (ScriptManager.GetCurrent(page).IsInAsyncPostBack)
                {
                    ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "alert", "alert('" + message + "')", true);
                }
                else
                {
                    HttpContext.Current.Response.Write(log);
                }
            }
    
            static string GenerateCodeFromFunction(string function)
            {
                return string.Format(scriptTag, function.Replace("\"","'"));
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-14
      • 2018-01-31
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多