2015-12-04 32 views
3

我有一個JavaScript函數,它使用字符串生成器function.it正在工作(95%)所有主要的瀏覽器,如IE8 +,鉻,火狐等我測試它,它工作正常,但有時候我會遇到「stringbuilder沒有定義」之類的錯誤。對於一些不是全部的客戶來說,我不能找到哪個瀏覽器和版本,所以我想知道stringbuilder功能是否適用於所有瀏覽器?是否有任何版本限制?我搜索了這個錯誤,但沒有得到任何答案。你們遇到過類似的問題?請建議一些鏈接或解決方法。下面是我的代碼。ReferenceError StringBuilder未在javascript中定義

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的declation。這個聲明有什麼問題嗎?請驗證此代碼。

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(""); 
    } 
+0

是不是'StringBuilder'應該是C#代碼? –

+0

@IonicăBizău** [我認爲是](http://www.codeproject.com/Articles/12375/JavaScript-StringBuilder)** –

+0

@GuruprasadRao是的,那麼它需要在客戶端上定義。 :) –

回答

0

有趣的是,您有時會得到錯誤,而不是其他人。你是怎麼陷入這種方法的? StringBuilder不是JavaScript本身的,但是是一個C#類。

如果你發現你需要定義StringBuilder的javascript的你可以這樣做是這樣的:

//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(''); 
} 
+0

對於遲到的回覆感到抱歉。我更新了代碼。你能看看它嗎?幫助讚賞。 – nichu09

+0

因此,當函數被定義爲Append時,您正在調用.append,因此存在問題。 –

+0

抱歉,謝謝您的提問。我更新了代碼,但它工作正常,失敗率爲90%,失敗率爲10%。那會是問題嗎? – nichu09

相關問題