首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将php中的json_encode结果传递给javascript,然后将其传递给另一个javascript函数。

问将php中的json_encode结果传递给javascript,然后将其传递给另一个javascript函数。
EN

Stack Overflow用户
提问于 2012-08-20 18:00:12
回答 3查看 364关注 0票数 1

我是一个初学者和新手到这个网站,我被困在我的项目在手,并将真正感谢一些帮助。

我正在使用第三方编写的JQuery插件。有3种javascripts,即a.js、b.js、c.js

a.js是b.js工作的框架。

b.js包含一个表单生成器,它包含一个函数,该函数调用存储在c.js中的名为selectionOpt的JSON数组

b.js中的函数如下所示

代码语言:javascript
复制
createChildren: function () {
        this._super();
        var self = this;

        this.comboselected = new DrawComboBox({
            styles: "comboselected",
            data: Draw.selectionOpt1,
            onChange:function () {
                self.comboselected = self.comboselected.value();
                    }       

   };
 });

c.js中的JSON数组如下所示

代码语言:javascript
复制
Draw.selectionOpt1 = [
    {"Id": 1,"data": Blue,"label": "Blue","quantity": 100},
    {"Id": 2,"data": Red,"label": "Red","quantity": 100},
    {"Id": 3,"data": Green,"label": "Green","quantity": 100},
    {"Id": 4,"data": White,"label": "White","quantity": 100},
    ...etc..
    ...etc..
    }
    ];

我希望将原始数据存储在数据库(MySQL)中,而不是c.js中,因为我目前正在努力解决这个问题。我有一个PHP脚本,即api.php,如下所示

代码语言:javascript
复制
<?php 


 include 'DB.php';
$con = mysql_connect($host,$user,$pass);
$dbs = mysql_select_db($databaseName, $con);

 $result = mysql_query("SELECT * FROM $tableName");          //query
$colouroptions = Array();                          //fetch result    

while( $obj = mysql_fetch_row($result) ) {  
 $colouroptions[] = $obj;  
}


 echo json_encode($colouroptions);  

?>

此脚本返回以下结果

代码语言:javascript
复制
[["1","Red","Red","100"],["2","Blue","Blue","100"],["3","Green","Green","100"], etc, etc.,...[etc, etc, etc, etc]]

Q1:我如何从MySQL中获取数据并以所需格式对其进行编码?

代码语言:javascript
复制
{"Id": 1,"data": Blue,"label": "Blue","quantity": 100},
{"Id": 2,"data": Red,"label": "Red","quantity": 100},
{"Id": 3,"data": Green,"label": "Green","quantity": 100},

etc etc etc

Q2:如何调用从api.php从b.js生成的JSON数组?还是我需要先把它反馈给c.js?怎么做呢?

谢谢你的进阶。

EN

回答 3

Stack Overflow用户

发布于 2012-08-20 18:11:33

使用mysql_fetch_object可以让json_encode以对象表示法而不是数组表示法生成JSON。将数据加载到JS中的最简单方法是从PHP回显数据,如下所示:

代码语言:javascript
复制
<?php
echo '<script type="text/javascript">';
echo 'Draw.selectionOpt1 = ' . json_encode($colouroptions) . ';';
echo '</script>';
?>
票数 1
EN

Stack Overflow用户

发布于 2012-08-20 18:08:04

尝试mysql_fetch_assoc而不是mysql_fetch_row。它将创建一个关联数组,该数组将被解析为您想要的json格式。

(我不明白你的第二个问题)

票数 0
EN

Stack Overflow用户

发布于 2012-08-20 18:15:25

如果使用jQuery,则ajax函数能够通过回调函数传递返回的结果。

代码语言:javascript
复制
$.ajax({
  url: 'ajax/test.php',
  dataType: 'json',
  success: function(data) {
    // here you can pass the results to another function
    createChildren(data);
  }
});


createChildren: function (passedData) {
        this._super();
        var self = this;

        this.comboselected = new DrawComboBox({
            styles: "comboselected",
            data: passedData,
            onChange:function () {
                self.comboselected = self.comboselected.value();
                    }       

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

https://stackoverflow.com/questions/12042644

复制
相关文章

相似问题

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