使用javascript和JSON来解决问题。 我想在JSON数组中存储一些html值,所以我可以在需要时调用它们(通常来自某些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,将selectedID
与json中的内容匹配?
我承认我是JSON的新手,这对我来说是学习如何使用它的好方法,也是从jquery调用名称/值对的好方法。
我希望将emailmsg_html
保存在json中,然后当我在select输入中选择匹配textarea
时将其加载到emailmsgid
。
(我基本上都在努力消除我的代码需要调用服务器的任何时候,看起来这是最好的路线)
答案 0 :(得分:1)
您是否尝试过使用json_encode()
:http://php.net/manual/en/function.json-encode.php
你可以传递它的对象,数组等,它会为你转换它们。
额外评论 你的代码非常混乱。在HTML中间有MySQL请求并不是很好。您可能希望对MVC框架进行一些研究。
答案 1 :(得分: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>
然后你的脚本将成为: $(文件)。就绪(函数(){
// 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>