2013-01-10 31 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” –