问题描述
我正在尝试使下面的类正常工作,但是我仍然收到一条错误消息,指出
alert!parsererrorSyntaxError:JSON中位置0 / Home / onPremTest {“ msg”:“ onPremTest消息”}}上的意外令牌
似乎在脚本结束标记中的开始符号导致了此消息。有谁知道如何格式化它,以便浏览器接受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),"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>
,
function
中的GenerateCodeFromFunction
应该对字符串使用'
或"
(首选"
)。所以我稍微改变了您所有的方法:
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),"alert","alert('" + message + "')",true);
}
else
{
HttpContext.Current.Response.Write(log);
}
}
static string GenerateCodeFromFunction(string function)
{
return string.Format(scriptTag,function.Replace("\"","'"));
}
}
}