1

私はこのサイトの初心者であり、初心者です。自分のプロジェクトで立ち往生しており、助けていただければ幸いです。

サードパーティによって作成された JQuery プラグインを使用しています。3 つの javascripts ieajs、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..
    }
    ];

生データを c.js の代わりにデータベース (MySQL) に保存したいのですが、現在これに苦労しています。以下のように書かれた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 etc

Q2: api.php から生成された JSON 配列を b.js から呼び出すにはどうすればよいですか? または、最初に c.js にフィードバックする必要がありますか? どうすればそれができますか?

よろしくお願いします。

4

3 に答える 3

0

mysql_fetch_rowの代わりにmysql_fetch_assocを試してください。希望のjson形式に解析される連想配列が作成されます。

(2番目の質問がわかりません)

于 2012-08-20T18:08:04.223 に答える
0

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();
                    }       

   };
 });
于 2012-08-20T18:15:25.137 に答える