首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php生成一组javascript代码

问使用php生成一组javascript代码
EN

Stack Overflow用户
提问于 2011-12-19 03:29:06
回答 5查看 129关注 0票数 2

我正在尝试使用php生成一组"{URL.callback}“,以便在javascript中使用。通过使用数据库。下面是我的代码:

代码语言:javascript
复制
$sql="select * from search where keywords LIKE '$bb%' ORDER BY keywords ";  

     $result=mysql_db_query($dbname,$sql);

     echo $_GET["callback"] . "({ t:\"$t\", r:[";
    while ( $rs=mysql_fetch_array($result))    {
        $keywords=$rs[keywords];

         echo "" ."\"$keywords\"".","." ";
    }

echo"] })";

下面是它返回的代码:

代码语言:javascript
复制
({ t:"", r:["example1", "example2", "example3",] })

似乎所有的东西都是正确的,除了我想要去掉的结尾(,)(在“example3”之后)。因为它是不正确的,不能和它一起使用。

问题是:如何正确地生成它?如何去掉最后一个(,)?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-12-19 03:35:11

解决方案

在PHP中创建数据结构(多维数组),让json_encode()生成JS数据结构。

示例

它可能看起来像这样:

代码语言:javascript
复制
$sql="select * from search where keywords LIKE '$bb%' ORDER BY keywords ";  
$result=mysql_db_query($dbname,$sql);

$data = array(
    't' => $t,
    'r' => array(),
);

while ( $rs=mysql_fetch_array($result)) {
    $data['r'][] = $rs['keywords'];
};

然后像这样显示它:

代码语言:javascript
复制
echo $_GET["callback"].'('.json_encode($data).');';
票数 0
EN

Stack Overflow用户

发布于 2011-12-19 03:33:40

不是自己生成JSON,而是使用json_encode为您完成繁重的工作。

代码语言:javascript
复制
$keywords = array ();

while ( $rs=mysql_fetch_array($result)) {
  $keywords[] = $rs['keywords'];
}

echo json_encode ($keywords);

首选解决方案

但是,如果您计划使用json_encode,请将$keywords附加到其他数据集,并在整个结构上使用json_encode。

代码语言:javascript
复制
$json_data = array (
  't' => '',
  'r' => array ()
);

while ( $rs=mysql_fetch_array($result)) {
  $json_data['r'][] = $rs['keywords'];
}

echo "(".json_encode ($json_data).")";

如果你想自己做这件事,有一些(相当干净的)选项可用,请看下面的代码片段。

将所有检索到的关键字附加到一个数组中,并在while循环$keyword_array = join ()之后使用以',‘为分隔符的数组来形成一个字符串;

代码语言:javascript
复制
while ($rs=mysql_fetch_array($result))    {   
  $keywords=$rs[keywords];

  $keyword_array = "\"$keywords\"";
}

echo join (', ', $keywords);

在while循环之前使用mysql_num_rows来获取$result中的行数,并且在处理最后一个元素时不要附加,。

代码语言:javascript
复制
$n_rows = mysql_num_rows ($result);

for ($i =1; $rs = mysql_fetch_array ($result); ++$i) {
  $keywords=$rs[keywords];

  echo "\"$keywords\"";

  if ($i != $n_rows)
    echo ", ";
}
票数 3
EN

Stack Overflow用户

发布于 2011-12-19 03:34:09

试试这个:

代码语言:javascript
复制
$output = '';
while ( $rs=mysql_fetch_array($result))    {
    $keywords=$rs[keywords];

     $output .= "" ."\"$keywords\"".","." ";
}
$output = substr($output, 0, -2);
echo $output;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8554202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档