TinyMCE の MySQL テーブルから動的に生成されたリンク リストがあります。これは、テーブル内のすべてのリンクを表示して問題なく動作します。今、サブ分野に基づいてクエリを絞り込むためのリンクのリストを生成する php ファイルに ajax 経由で値を渡そうとしています:
<script type="text/javascript">
$(document).ready(function() {
$("#sub_discipline").change(function(){
$.ajax({
url: "../scripts/tiny_mce/lists/link_list.js.php",
type: "post",
data: {
sub_discipline : $('#sub_discipline').val()
},
success: function(data){
}
});
});
}
);
</script>
問題は、おそらく値が渡されていないため、リンクのリストが TinyMCE に表示されないことです。URL 文字列に値を渡す link_list.js.php で結果を取得できるため、別のことが起こっています。上記の ajax 呼び出しが間違っているか、TinyMCE がエディターの読み込み時にリンクのリストを読み込み、その後リストを更新できません。
参考までに、これが他の人に役立つ場合に備えて、link_list.js.php は TinyMCE のリンクのリストを作成するのに問題なく動作します。
<?php Header("content-type: application/x-javascript"); ?>
<?php
require_once('../../../connection/connect.php');
mysql_select_db($database, $connection);
$sub_discipline = $_POST['sub_discipline'];
$query = "SELECT link_title, url FROM link WHERE sub_discipline_fk = '$sub_discipline'";
$result = mysql_query($query, $connection) or die(mysql_error());
$links = array();
while($row = mysql_fetch_assoc( $result)){
$links[$row['link_title']] = $row['url'];
}
$o = null;
$count = count($links);
$i = 1;
foreach($links as $text => $url){
$o .= sprintf(('["%1$s", "%2$s"]'),
$text,
$url
);
if($i < $count)
$o .= ',';
$i++;
}
?>
var tinyMCELinkList = new Array(
<?php echo $o; ?>
);
リンク リストが tinyMCE.init のオプションとして追加されます。
<script type="text/javascript">
tinyMCE.init({
// General options
mode : "textareas",
theme : "advanced",
plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
// Theme options
theme_advanced_buttons1 : "print,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist,|,formatselect,fontsizeselect,|,forecolor,backcolor",
theme_advanced_buttons2 : "cut,copy,paste,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code,|,insertdate,inserttime,preview,|,fullscreen",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,|,sub,sup,|,charmap,emotions,iespell,media,|,ltr,rtl",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
// Skin options
skin : "o2k7",
skin_variant : "silver",
// Drop lists for link/image/media/template dialogs
external_link_list_url : "../scripts/tiny_mce/lists/link_list.js.php",
external_image_list_url : "js/image_list.js",
media_external_list_url : "js/media_list.js",
});
</script>