2013-01-10 66 views
0

我是javascript中的新手,我並不真正瞭解我遇到的錯誤。函數result.charAt不存在

我正在開發一個MVC3網站,它必須監視一個嵌入式系統。

這裏是正在運行的JavaScript代碼:

function GetTemp() { 
    var test = "gTe"; 
    $.ajax({ 
     url: '@Url.Action("../Carte/Get")', 
     type: 'GET', 
     data: {test: test}, 
     success: function (result) { 
      if (result.charAt(4) == 'a') { 
       $("#LumAct").text(result.substr(0, 4) + " %"); 
       alert('a'); 
      } 
    ... 

這裏是C#的行動,返回一個字符串

public String Get(String test) 
    { 
     flag = TCPClient.SendData(test); 
     if (flag == "1") 
     { 
      try 
      { 
       value = TCPClient.ReceiveData(); 
      } 
      catch 
      { 
       value = "Erreur"; 
      } 
     } 
     else value = "Erreur"; 

     return value; 
    } 

我的錯誤是在Firebug,它告訴我:

TypeError: result.charAt is not a function 
     [Stopper sur une erreur]  
if (result.charAt(4) == 'a') { 

那麼,我還沒有明白什麼?根據我的說法,我使用了一個ajx函數,它向控制器發送一個httpGet,該控制器用一個字符串響應。在JavaScript中,我可以像我一樣處理字符串。

要使用字符串對象,我沒有添加任何庫。我應該這樣做嗎?我還沒有找到任何有關這方面的信息。如果檢查

$.ajax({ 
    url: '@Url.Action("../Carte/Get")', 
    type: 'GET', 
    dataType: 'text', 
    data: {test: test}, 
    success: function (result) { 
     if (result.charAt(4) == 'a') { 
      $("#LumAct").text(result.substr(0, 4) + " %"); 
      alert('a'); 
     } 
+1

嘗試設置'dataType:'text','以防止jQuery轉換您的數據。 – Musa

回答

2

你可以試試這個:

if (String(result).charAt(4) == 'a') 

此外,由@Musa提到的,你應該在dataType屬性添加到AJAX調用請參閱第一個參數是格式爲dataType參數的對象。老實說,我會console.log的結果,看看它是什麼樣子。如果你不能charAt()那麼結果可能不是一個字符串。

+0

錯誤消失了。 這是否意味着結果不是字符串?還是沒有看到由Firefox的字符串?或者我應該添加一些代碼來告訴瀏覽器它是一個字符串? –

+0

這可能是因爲jQuery隱式轉換你的數據。 – ATOzTOA

+0

thx爲更新,我不確定在哪裏把這個「dataType」 –