首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MYSQL Data JSON PHP array -> Javascript (或Jquery)如何传递数据?

MYSQL Data JSON PHP array -> Javascript (或Jquery)如何传递数据?
EN

Stack Overflow用户
提问于 2010-04-30 00:49:08
回答 4查看 3.1K关注 0票数 1

我从一个新的网站开始(这是我的第一个),我遇到了很大的麻烦!我写了这段代码

代码语言:javascript
代码运行次数:0
运行
复制
<?php
    include("misc.inc");
    $cxn=mysqli_connect($host,$user,$password,$database) or die("couldn't connect to server");
    $query="SELECT DISTINCT country FROM stamps";
    $result=mysqli_query($cxn,$query) or die ("couldn't execute query");
    $numberOfRows=mysqli_num_rows($result);

    for ($i=0;$i<$numberOfRows;$i++){
        $row=mysqli_fetch_assoc($result);
        extract($row);
        $a=json_encode($row);
        $a=$a.",";
        echo $a;
    }
?>

输出结果如下:

代码语言:javascript
代码运行次数:0
运行
复制
{"country":"liechtenstein"},{"country":"romania"},{"country":"jugoslavia"},{"country":"polonia"},

这应该是一个正确的JSON输出...

我现在如何在Jquery中获取它?我试着用

代码语言:javascript
代码运行次数:0
运行
复制
$.getJSON 

但我不能正确地融合它。我还不希望将数据传递到DIV或类似的HTML中。

作为更新,Andres Descalzo的代码可以工作!

代码语言:javascript
代码运行次数:0
运行
复制
<?php
    include("misc.inc");
    $cxn=mysqli_connect($host,$user,$password,$database) or die("couldn't connect to server");
    $query="SELECT DISTINCT country FROM stamps";
    $result=mysqli_query($cxn,$query) or die ("couldn't execute query");
    $numberOfRows=mysqli_num_rows($result);

    echo "{data: [";
    for ($i=0; $i<$numberOfRows; $i++){
        $row=mysqli_fetch_assoc($result);
        extract($row);
        $a = (($i!=0)?",":"") . json_encode($row);
        echo $a;
    }
    echo "]}";
?>

输出正确,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
{data: [{"country":"liechtenstein"},{"country":"romania"},{"country":"jugoslavia"},{"country":"polonia"}]}

如何使用$getJSON

语法是这样的

代码语言:javascript
代码运行次数:0
运行
复制
$.getJSON( url, [ data ], [ callback(data, textStatus) ] )

url就是上面提到的PHP文件,但是[data]和回调函数?

EN

回答 4

Stack Overflow用户

发布于 2010-04-30 00:56:46

它不是正确的JSON。正确的做法是,将元素括在方括号中(表示一个数组),如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
[{"country":"liechtenstein"},
 {"country":"romania"},
 {"country":"jugoslavia"},
 {"country":"polonia"}]

您可以首先从DB获取数组中的所有元素,然后对此数组进行编码:

代码语言:javascript
代码运行次数:0
运行
复制
$elements = array()

for ($i=0;$i<$numberOfRows;$i++){
        $elements[]=mysqli_fetch_assoc($result);
}

echo json_encode($elements);

这应该可以工作(在jQuery中使用$.getJSON() )。

更新:A .getJSON()示例:

代码语言:javascript
代码运行次数:0
运行
复制
$.getJSON('/path/to/php_file', function(data) {
    // something with data which is of form
    // data = [{'country': '...'}, {...}, ...]
    //e.g.
    alert(data[0].country);
});
票数 3
EN

Stack Overflow用户

发布于 2010-04-30 01:04:50

请注意,JSON字符串不是有效的JSON字符串!我建议您在生成输出之前使用一次json_encode。你可能会这么做:

代码语言:javascript
代码运行次数:0
运行
复制
$countries = array();
for ($i=0;$i<$numberOfRows;$i++){
    $row=mysqli_fetch_assoc($result);

    //Not needed, I guess
    //extract($row); 

    $countries[] = $row;

    //More probably, you want to get only the country name
    //$countries[] = $row['country'];
}

$result = json_encode( $countries );
echo $result;

希望它是正确的,我还没有测试它:)

票数 1
EN

Stack Overflow用户

发布于 2010-04-30 00:56:15

我想你想回声一次-在循环之后。此外,如果您希望将其作为数组传递,请用括号将其括起来。如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
for ($i=0;$i<$numberOfRows;$i++){
        $row=mysqli_fetch_assoc($result);
        extract($row);
        $a=json_encode($row);
        $a=$a.",";
    }
echo '['.$a.']';

您发送的结果将是:

代码语言:javascript
代码运行次数:0
运行
复制
[{"country":"liechtenstein"},{"country":"romania"},{"country":"jugoslavia"},{"country":"polonia"},]

至于$.getJSON,你是如何应用它的?getJSON的语法为:

代码语言:javascript
代码运行次数:0
运行
复制
$.getJSON( url, [ data ], [ callback(data, textStatus) ] )

你需要一个回调函数来使用'data‘

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2739160

复制
相关文章

相似问题

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