0

javascriptとJSONで落ち込んで汚い。いくつかのhtml値をJSON配列内に格納したいので、必要なときにそれらを呼び出すことができます(通常はいくつかのjqueryイベントリスナーから)

これは、クライアントからサーバーへの呼び出しに$.ajaxを常に使用するよりも優れています。

だから、私<select>はデータベースにデータが入力されたオプションを持っています:

<select name="emailmsgid" id="emailmsgid">
<option value="0">------select a template-------</option>
<?php 
 $q = mysql_query("SELECT emailmsgid,emailmsgsubject,emailmsg_html FROM tbl_email_templates");
 while ($r = mysql_fetch_array($q)){
   $emailmsgid = $r['emailmsgid']; // int
   $emailmsgsubject= $r['emailmsgsubject']; // short desc
   $emailmsg_html = $r['emailmsg_html']; // usually html with images (save to json, somehow)
?>
   <option value="<?=$emailmsgid;?>"><?=$emailmsgsubject;?></option>
 <? } ?>
</select>
<br>
<textarea name="selectedmsg" id="selectedmsg"></textarea>

<script language="javascript" type="text/javascript">
$(document).ready(function(){

  // populate the textarea above
  $("#emailmsgid").change(function(){
    var selectedID = $(this).val();
     /* how to look into json here with selectedID */ 

    $("#selectedmsg").val("whatever the json has saved for that emailmsgid");
  }); 

});
</script>

これが上に欠けているものです。
-json文字列を(php / mysql whileステートメント内から)作成して、以下のjqueryがjsonを参照できるようにし、jsonselectedID内にあるものと一致させますか?

私はJSONを初めて使用することを認めています。これは、JSONの操作方法を学び、jqueryから名前と値のペアを呼び出すための優れた方法です。

emailmsg_html内部のjsonを保存し、select入力でtextarea一致するものを選択したときにロードすることを望んでいます。emailmsgid

(私は基本的に、コードがサーバーを呼び出す必要があるときはいつでも排除することに取り組んでおり、これが最良のルートのようです)

4

2 に答える 2

1

使用してみましたか:http json_encode()//php.net/manual/en/function.json-encode.php

オブジェクトや配列などを渡すことができ、それらを変換します。

追加コメント あなたのコードはかなり乱雑です。HTMLの途中にMySQLリクエストがあるのは素晴らしいことではありません。MVCフレームワークについて調査することをお勧めします。

于 2013-01-11T19:26:32.200 に答える
0

さまざまなエンコーディングとトランスポートの問題を防ぐために私が行うことは、後でアクセスできる非表示のコンテナーにhtmlを配置することです。

<div style="display:none">
<?php while ($r = mysql_fetch_array($q)){ ?>
    <div id="container_<?php echo $r['emailmsgid']; ?>">
        <div class="description">
            <?php echo $r['emailmsgsubject']; // short desc ?>
        </div>
        <div class="html">
            <?php echo $r['emailmsg_html']; // usually html with images (save to json, somehow) ?>
        </div>
<?php } ?>
</div>

次に、スクリプトは次のようになります。$(document).ready(function(){

  // populate the textarea above
  $("#emailmsgid").change(function(){
    var selectedID = $(this).val();

    var msgHtml = $('#container_' + selectedID).find('.html').html();  // This line is how you get the html

    $("#selectedmsg").val("whatever the json has saved for that emailmsgid");
  }); 

});
</script>
于 2013-01-11T19:30:40.710 に答える