最近用了JQUERY的autocomplete插件,传入的值要用JSON格式。
$().ready(function() {
function formatItem(row) {
return row[0] + " (<strong>id: " + row[1] + "</strong>)";
}
function formatResult(row) {
return row[0].replace(/(<.+?>)/gi, '');
}
var qtyStr=""; 
<ww:iterator value="qtyUnitList" status="index"> 
qtyStr+="'<ww:property value='xcname' />',";
</ww:iterator>
var qtyUnits= "["+qtyStr.replace(/,$/,"")+"]"+";";
自已手动用拼接方式组成JSON。但是传入没反应。如果把拼接后的字符串。直接放到JS中的话就能识别。类似下面的MONTHS就能识别。现在估计是存在转换的问题。大家有没有好的解决方法。
var months = ['一月', 'er yue', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
$("#keyword").autocomplete(qtyUnits, {
minChars: 0,
max: 12,
autoFill: true,
mustMatch: true,
matchContains: false,
scrollHeight: 220,
formatItem: function(data, i, total) {
return data[0];
}
});
});

解决方案 »

  1.   

    JS拼接好的字符串对象.evalJSON(),将字符串转换成json对象。
      

  2.   

    evalJson是prototype框架的。。我是JQUERY的~
      

  3.   

    自己写一个类似evalJson的方法不就行了。
      

  4.   

    http://www.cnitblog.com/yemoo/archive/2007/10/08/34526.html
      

  5.   

    <script type="text/javascript">
      <!--
      var a=50,b="xxx";
      var arr="{id:"+a+",name:'"+b+"'}";
      //-->
    </script>
    组合成了字符串arr,下一步就是转换成对象了,很快我们会想到使用eval方法,但如果这样做转换会出现错误,今日偶就这样尝试了,那该如何转换成json对象呢?郁闷许久,之后在json官网提供的json.js文件中找到了解决办法,方法如下:
    在字符串两端再加上括号然后eval就ok了。测试代码如下:<script type="text/javascript">
      <!--
      var a=50,b="xxx";
      var arr="{id:"+a+",name:'"+b+"'}";
      arr=eval('('+arr+')')
      alert(arr.name);
      //-->
    </script>上面代码执行后会弹出“xxx”,说明已经成功转换为json对象了,一个似乎很简单的问题,不过还是郁闷了半天才解决掉,还是记到blog上以加深印象,也希望能帮助遇到此问题的朋友早日解除郁闷。
      

  6.   

    var qtyUnits= "["+qtyStr.replace(/,$/,"")+"]"+";";不知是不是我这个拼接有错。。反正是一直转不了。。
      

  7.   

    不是 
    是{}里面是名称和值之间是冒号,有多个就是逗号间隔。
    如:{aa:1,bb:2,cc:3}
      

  8.   

    其实我发现我错了上面的是数组格式。杯具啊。。
    现在只能求字符串转成数组如下格式。。
    var months = ['一月', 'er yue', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];