2011-07-11 207 views
0
var channelsArray = []; 
var percentArray= []; 
var valueArray= []; 
var jsonData,canvas,context; 
var colorArray=["#ECD078","#D95B43","#C02942","#542437","#53777A"]; 
var posX=220; 
var posY=60; 
var width=55; 
var graph=false; 


//Webservice Request and Response begins....................................... 

     $.ajax({ 
      type: "POST", 
      url: "http://localhost/WebSite1/myservice.asmx/GetData", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      success: function(msg) { 
     if(localStorage.getItem("channels")==null){ 
        jsonData =jQuery.parseJSON(msg.d); 
        jsonToLocal();   
      }  
       var strDisplay = " <table cellspacing='0' id='myTable' " + 
           " <tr>" + 
           " <th > Channels </th>" + 
           " <th> Percentage</th>" + 
           " <th> Value</th>" + 
           " </tr>"; 
       for (var i = 0; i < colorArray.length; i++) { 
        strDisplay = strDisplay + 
           " <tr style='cursor:pointer;' onclick='javascript:rotateChart("+i+")'>" + 
           " <td>" + channelsArray[i] + "</a> </td>" + 
           " <td> " + percentArray[i] + " </td>" + 
           " <td> " + valueArray[i] + " </td>" + 

           " </tr>"; 

       } 
       strDisplay = strDisplay + "</table>"; 

       document.getElementById('DynamicGridLoading').innerHTML = strDisplay; 
        document.getElementById('myTable').setAttribute("class","datatable"); 


      }, 


      error:function(xhr, ajaxOptions, thrownError){ 
      alert(xhr.statusText); 
      } 
     }); 

//Webservice Request and Response ends........................ 

//converting json data into local storage.... 

function jsonToLocal(){ 




      for(i=0;i<jsonData.Table.length;i++){ 

       percentArray.push(jsonData.Table[i].toString()); 
       channelsArray.push(jsonData.Table[i].Channels); 
       valueArray.push(jsonData.Table[i].Value); 
      } 


      try { 
        localStorage.setItem("percentage", percentArray.join(",")); 
        localStorage.setItem("channels",channelsArray .join(",")); 
        localStorage.setItem("value",valueArray.join(",")); 



       } 
      catch (e) { 
          if (e == QUOTA_EXCEEDED_ERR) { 
           alert("Quota exceeded!"); 
          } 
         } 

} 

这是我几乎完整的代码...在percentArray函数jsontolocal中得到这个'uncaught'错误....如果我删除这条线..其他两个工作正常..所有这些数组正在推动的字符串值内DEM ..JavaScript全局变量

+2

你应该使用'[]'而不是'new Array()' – ThiefMaster

+3

**向我们展示一些真实的代码** - In你的例子函数是永远不会被调用的,因为你在函数调用中犯了一个错字! – ThiefMaster

+0

hey ThiefMaster..thnx ..但是在实际的代码中没有输入错误(抱歉我的输入错误:)) – user1039575

回答

0

我的问题是什么,但JavaScript的随机和未知的行为。要确保这从未happens..i发现跟随在写JavaScript代码下面的事情 - :

  1. 使用===与空值比较和0
  2. 在使用parseInt..ie..parseInt(string,radix)时提供基数;
  3. 始终声明变量,例如(VAR I = 0; ... ...而不是(I = 0; ........

这些都是错误我是making..sometimes它会运行..有时它会显示一个随机的行为..总之,我的问题解决了

0

你有一个错字:

myfucntion() 

应该

myfunction(); 

这个代码WO RKS(我把函数调用的函数之下,否则在全球范围内(我测试了它在Firebug控制台)功能无法识别):

var myArray=[]; 


function myfunction(){ 

    myArray.push('s'); //at this point..my global array is not recognized. 

} 
myfunction(); 


alert(myArray[0]);//alert s 

小提琴http://jsfiddle.net/GrpJw/1/

+0

这不是他的问题,但他的原因。根据他的错误消息'push()'被调用,但在一个'null'值而不是一个数组 – ThiefMaster

+0

我编辑我的答案与代码和它的工作原理(在jsfiddle) –

+0

之间的声明和函数调用..am做一个$(ajax)的帖子...和我在成功里调用myfunction():function(msg){},它以任何方式影响声明范围? – user1039575