我是一个初学者和新手到这个网站,我被困在我的项目在手,并将真正感谢一些帮助。
我正在使用第三方编写的JQuery插件。有3种javascripts,即a.js、b.js、c.js
a.js是b.js工作的框架。
b.js包含一个表单生成器,它包含一个函数,该函数调用存储在c.js中的名为selectionOpt的JSON数组
b.js中的函数如下所示
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数组如下所示
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,如下所示
<?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);
?>此脚本返回以下结果
[["1","Red","Red","100"],["2","Blue","Blue","100"],["3","Green","Green","100"], etc, etc.,...[etc, etc, etc, etc]]Q1:我如何从MySQL中获取数据并以所需格式对其进行编码?
{"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 etcQ2:如何调用从api.php从b.js生成的JSON数组?还是我需要先把它反馈给c.js?怎么做呢?
谢谢你的进阶。
发布于 2012-08-20 18:11:33
使用mysql_fetch_object可以让json_encode以对象表示法而不是数组表示法生成JSON。将数据加载到JS中的最简单方法是从PHP回显数据,如下所示:
<?php
echo '<script type="text/javascript">';
echo 'Draw.selectionOpt1 = ' . json_encode($colouroptions) . ';';
echo '</script>';
?>发布于 2012-08-20 18:08:04
尝试mysql_fetch_assoc而不是mysql_fetch_row。它将创建一个关联数组,该数组将被解析为您想要的json格式。
(我不明白你的第二个问题)
发布于 2012-08-20 18:15:25
如果使用jQuery,则ajax函数能够通过回调函数传递返回的结果。
$.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();
}
};
});https://stackoverflow.com/questions/12042644
复制相似问题