问题出在jQuery语句中。你通过了get_field_id
但没有#
它正在寻找tag
不是和id
. 第二件事是,即使这样做有效,您也只能用一个文件名替换内容,使用html
但您应该使用append
.
下面是一个快速测试,以突出显示这些区域。
function form_test () {
$field_id = \'test_xyz\';
?><select id="<?php echo $field_id; ?>" name="<?php echo $field_id; ?>" size="10" multiple="multiple" tabindex="1"></select>
<script type="text/javascript">
jQuery(document).ready(function($){
var data = [\'fileA\', \'fileB\', \'fileC\'];
for(var i = 0; i < data.length; i++){
var filename = data[i];
jQuery( "#<?php echo $field_id; ?>").append(\'<option value="\'+filename+\'">\'+filename+\'</option>\');
}
});
</script><?php
}
add_filter (\'the_content\', function($content){ return $content.form_test(); });
您的代码最终看起来更像
function form ($instance) {
$field_id = $this->get_field_id( \'filenames\' );
?><select id="<?php echo $field_id; ?>" name="<?php echo $field_id; ?>" size="10" multiple="multiple" tabindex="1"></select>
<script type="text/javascript">
jQuery(document).ready(function($){
var data = { \'action\' : \'clc_return_imagefilenames\' };
// send ajax request
jQuery.post(ajaxurl, data, function(response) {
// parse response and add slides
var retrievedImagenames = JSON.parse(response);
for(var i = 0; i < retrievedImagenames.imagenamestoreturn.length; i++){
var filename = retrievedImagenames.imagenamestoreturn[i][\'filename\'];
jQuery( "#<?php echo $field_id; ?>").append(\'<option value="\'+filename+\'">\'+filename+\'</option>\');
}
});
});
</script><?php
}