2013-02-23 66 views
0

我有這個Web服務獲取城市的所有名稱並返回json格式的字符串。爲什麼此代碼給我一個例外無效的字符

public String getDataForTowns() throws ClassNotFoundException 
{ 
    String strXml = ""; 

     Class.forName("org.postgresql.Driver"); 

      try 
      { 
       conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/plovdivbizloca", "postgres", "tan"); 
      } 

     catch (SQLException ex) { 
      ex.printStackTrace(); 
     } 

     Statement mystmt = null; 
     String selectQuery = "select * from municipality_id"; 
     try { 
      mystmt = conn.createStatement(); 
      ResultSet mysr = mystmt.executeQuery(selectQuery); 

      ResultSetMetaData rsmd = mysr.getMetaData(); 
      int colCount = rsmd.getColumnCount(); 
      int numberrow = 0; 

      strXml += "{\"rows\": ["; 
      while (mysr.next()) 
      {    
        String townname = mysr.getString(2); 
        String townid=mysr.getString(1); 

        strXml += "{\"town\":\"" + townname 
          + "\", \"id\":" + townid + "},"; 


       //strXml += ","; 
      } 
      strXml += "]}"; 
     } 

     catch (Exception ex) 
     { 
     } 

     return strXml; 
    } 

並且在客戶端我有這個函數,並且在alert語句中它給了我例外「無效字符」。

function loadTownSelect() 
    { 
     select = document.getElementById('sphSel'); 
     createXMLHttpRequest(); 

     var txtDrop = new Array(); 
     var idDrop= new Array(); 

     xmlhttp.onreadystatechange = function() 
     { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
       alert(xmlhttp.responseText); 
       var xmlObj = xmlhttp.responseXML; 

       var textXML = xmlObj.documentElement.firstChild.firstChild.nodeValue; 
       alert(textXML); 

       var nwresp = JSON.parse(textXML); 
       alert (nwresp.rows[2].town);    
      } 
     } 

     var url = "http://localhost:9091/localbusscat/services/localbusscat/getDataForTowns"; 
     xmlhttp.open("GET", url, true); 
     xmlhttp.send(); 
    } 
+1

沒有告訴你無效字符是什麼,什麼行它位於這個額外逗號導致一個錯誤? – hohner 2013-02-23 15:13:20

+5

無效的字符很可能來自'JSON.parse(textXML);',看起來您可能以'},]'結尾您的JSON字符串,即逗號左邊 – 2013-02-23 15:13:56

+1

您正在使用名爲'strXml的變量'建立一個JSON格式的字符串? – 2013-02-23 15:14:30

回答

1

你的服務器端代碼添加一個逗號後,每「對象常量」,連最後一個,這不應該以逗號結束。與JSON.parse()對客戶方解析字符串時

+ "\", \"id\":" + townid + "},"; 
-----------------------------^ 
+0

是的,謝謝!所有! – user1966221 2013-02-27 10:53:01

相關問題