1

所以我有一个执行此操作的 php 脚本:

$rows = array();        
while($r = mysql_fetch_assoc($sth2)) {
 $rows[] = array($r['alternative'] => $r['amount']);
}
print json_encode($rows);

我得到这个输出:

[{"\u00e5l":"3"},{"vin":"3"},{"whiskey":"1"},{"gin":"1"},{"rom":"1"},{"vodka":"1"}]

问题一:\u00e5 应该是 ø。除了这个功能之外,其他所有东西都适用于 utf8,知道如何解决这个问题吗?

第二个问题是我似乎无法以一种很好的方式读取 javascript 中的数据。我目前正在使用此代码(我知道不是那么好,但它现在应该可以工作):

$.each(obj, function(key, val) 
{
counter = counter +1 ;
switch (counter)
    {
        case 0:
            numberOne = key;
            valueOne = val;
            break;
        case 1:
            numberTwo = key;
            valueTwo = val;
            break;
        case 2:
            numberThree = key;
            valueThree = val;
            break;
        case 3:
            numberFour = key;
            valueFour = val;
            break;
        case 4:
            numberFive = key;
            valueFive = val;
            break;
        case 5:
            numberSix = key;
            valuesix = val;
            break;
    }
});
4

3 回答 3

1

您可以将 JSON_UNESCAPED_UNICODE 选项传递给 json_encode。

你用来读出数据的代码确实看起来不是最理想的,但很难评论如何改进它,因为我无法判断你实际上对数据做了什么。

于 2012-07-23T11:17:34.210 回答
0

对于您的第二个问题,您可以使用

for(a in obj)
{
  alert(a +' = '+obj[a]);
}

你还没有通过读取对象属性来指定你想要实现的目标所以我把它留给你:) 希望它有所帮助。

编辑:

for(a in obj)
    {
      alert(a +' = '+obj[a]);
      for(b in obj[a])
      {
        alert(b+' = '+obj[a][b]); // or   alert(b+'  '+obj[a].b); would work  
      }
    }
于 2012-07-23T11:23:08.270 回答
-3

您不能使用 JSON 传递空值。用空字符串替换它们。我建议在查询级别通过

case columnname when is null then '' end as newcolumnname
于 2012-07-23T11:26:23.933 回答