ReferenceError StringBuilder 未在 javascript 中定义
Posted
技术标签:
【中文标题】ReferenceError StringBuilder 未在 javascript 中定义【英文标题】:ReferenceError StringBuilder is not defined in javascript 【发布时间】:2016-03-08 23:02:46 【问题描述】:我有一个使用字符串生成器函数的 javascript 函数。它可以在所有主要浏览器(如 IE8+、chrome、firefox 等)上运行 (95%)。我对其进行了测试,它运行良好,但有时我会收到类似的错误“未定义字符串生成器”。它面向一些客户而不是所有客户,我找不到哪个浏览器和版本,所以我想知道 stringbuilder 功能是否适用于所有浏览器?有版本限制吗?我搜索了这个错误,但没有得到任何答案。你们遇到过类似的问题吗?请提出一些链接或方法来解决这个问题。下面是我的代码。
function GetXmlString()
try
var sbMain = new StringBuilder();
sbMain.append("<?xml version='1.0' encoding='UTF-16' ?>");
sbMain.append("<Application");
sbMain.append("</Application>");
catch (e)
strXml = "";
//alert("Error in GetXmlString " + e.name + "\n" + e.message);
var error = "Error in GetXmlString " + e.name + "\n" + e.message
$.ajax( type: "POST",
url: "AL_GetAjaxValue.aspx",
data: type: "LogError", Error: "" + error + "" ,
dataType: "html",
success: function(msg)
,
error: function()
);
我找到了 StringBuilder 声明。这个声明有什么问题吗?请验证此代码。
function StringBuilder(value)
this.strings = new Array("");
this.append(value);
StringBuilder.prototype.append = function(value)
if (value)
this.strings.push(value);
StringBuilder.prototype.clear = function()
this.strings.length = 1;
StringBuilder.prototype.toString = function()
return this.strings.join("");
【问题讨论】:
StringBuilder
不应该是 C# 代码吗?
@IonicăBizău I think Yes
@GuruprasadRao 是的,那需要在客户端定义。 :)
确实如此.. 但是 OP 说 有时他会出错 那么他一定已经包含了它.. :)
【参考方案1】:
有趣的是,您有时会得到错误,而其他时候不会。你是怎么落入这种方法的? StringBuilder 不是 JavaScript 原生的,而是一个 C# 类。
如果您发现需要为 javascript 定义 StringBuilder,您可以这样做:
//StringBuilder class
function StringBuilder(value)
this.strings = new Array('');
this.append(value);
// Appends the given value to the end of this instance.
StringBuilder.prototype.append = function (value)
if (value)
this.strings.push(value);
StringBuilder.prototype.appendLine = function(value)
if(value)
this.strings.push(value);
this.strings.push("\n");
// Clears the string buffer
StringBuilder.prototype.clear = function ()
this.strings.length = 1;
// Converts this instance to a String.
StringBuilder.prototype.toString = function ()
return this.strings.join('');
【讨论】:
抱歉回复晚了。我更新了代码。你能看看吗?帮助表示赞赏。 因此,当函数被定义为 Append 时,您正在调用 .append,因此存在问题。 对不起,谢谢你的意见。我更新了代码。但它在 90% 和 10% 的情况下都可以正常工作。这会是问题吗? 不知道是什么时候创建的,将 StringBuilder 类添加到原型中?也许有时它在范围内,有时它不取决于你的 javascript 是如何设置的。 我更新的代码和你的代码一样。我声明了两个 StringBuilder 对象并将第一个附加到第二个。这有什么区别吗? bMain.append(sb.toString().replace(/%3C/g, "<").replace(/%3E/g, ">"));以上是关于ReferenceError StringBuilder 未在 javascript 中定义的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript Uncaught ReferenceError: jQuery is not defined;未捕获的 ReferenceError:$ 未定义 [重复]