0


0

phpおよびjavascriptの設計

質問はPHPとJavascriptに関連しています

今のところ、すべてのテーブルには、それぞれがid = "field_from_table"を持つ入力タグを持つフォームがあります

GLOBAL_TABLE =そのテーブルの名前+ GLOBAL_FIELDS =そのテーブルのフィールドの名前+ GLOBAL_ID =テーブルのID値。

すべてのフィールドにはimのラベルもあります。 一部のフィールドはテキストではありません。

これらの入力タグを取得/設定したい。

今では次のようなデザインです:

    function get()
    {
    id=GLOBAL_ID
    $.post("handle.php",{type:"get",tablename:GLOBAL_TABLE,fields:GLOBAL_FIELDS,id:GLOBAL_ID),function(data)
    {
       fieldValues=/*javascript explode data*/;
       foreach(/*array of fields as idx=>fieldName*/)
           {$("#"+fieldName)=fieldValues[idx];}
    }
    function set()
    {
    /*for each GLOBAL_FIELDS as idx=>fieldName
      values[fieldName]=$("#"+fieldName).val;
    */

    valuesI=/*implode values*/;
    $.post("handle.php",{type:"set",tablename:GLOBAL_TABLE,fields:GLOBAL_FIELDS,values:valuesI),
      function(data)
        {
        if (data!=null) alert ("error");
        }
    }

handle.phpは、情報をテーブルとフィールドに更新します。 またはCSVを選択して出力します。

問題は、javascriptがそれを使用できるようにphpからフィールドリストを出力する必要があり、javascriptをそのように使用することは良い考えではないことです

より良いデザインがありますか。

良い答えやアドバイスをいただければ幸いです。

arye

1 Answer


0


これを試して:

    function get()
    {

        $.post("handle.php",{type:"get",tablename:GLOBAL_TABLE,fields:GLOBAL_FIELDS),function(data)
            {
               var fieldValues = data.split(','),
                   fieldNames = GLOBAL_FIELDS.split(',');

               for(var ind = 0; ind < fieldNames.length; ind++) {
                    $("#"+fieldName[ind])=fieldValues[ind];
               }
            }
        });
    }

    function set()
    {
         var fieldValues = "",
             fieldNames = GLOBAL_FIELDS.split(',');

         for(var ind = 0; ind < fieldNames.length; ind++) {
                valuesI += ((fieldValues.length == 0) ? "" : ",") + unescape($("#"+fieldName[ind]).val());
         }

        $.post("handle.php",{type:"set",tablename:GLOBAL_TABLE,fields:GLOBAL_FIELDS,values:valuesI), function(data)
            {
            if (data!=null)
                alert ("error");
          }
        });
    }