簡體   English   中英

如何在 MVC 中寫入瀏覽器控制台?

[英]How can I write to the browser console in MVC?

我正在嘗試讓下面的課程正常工作,但是我繼續收到一條錯誤消息,指出

警報!解析器錯誤語法錯誤:意外的令牌< JSON 位置 0/Home/onPremTest{"msg":"onPremTest message"}

腳本結束標記中的開始符號似乎導致了此消息。 有誰知道如何格式化它以便瀏覽器接受 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);
  }
}

該錯誤意味着您的一個開始標簽有問題。 這也可能是別的東西,但這是我迄今為止所經歷的。

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

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

functionGenerateCodeFromFunction應該要么使用'"字符串( "者優先)。 所以我稍微改變了你的所有方法:

 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("\"","'"));
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM