启动AJAX生成的表单的TinyMCE按钮

时间:2011-08-07 作者:helgatheviking

如果我按照有关如何为短代码添加tinyMCE按钮的教程进行操作

(例如:http://www.garyc40.com/2010/03/how-to-make-shortcodes-user-friendly/ )

如果我在thickbox中创建一个启动表单的按钮,则始终会有以下代码来创建启动的表单:

// executes this when the DOM is ready
    jQuery(function(){
        // creates a form to be displayed everytime the button is clicked
        // you should achieve this using AJAX instead of direct html code like this
        var form = jQuery(\'<div id="kiaAWeber-form"><table id="mygallery-table" class="form-table">\\
            <tr>\\
                <th><label for="mygallery-columns">Columns</label></th>\\
                <td><input type="text" id="mygallery-columns" name="columns" value="3" /><br />\\
                <small>specify the number of columns.</small></td>\\
            </tr>\\

        </table>\\
        <p class="submit">\\
            <input type="button" id="mygallery-submit" class="button-primary" value="Insert Gallery" name="submit" />\\
        </p>\\
        </div>\');

        var table = form.find(\'table\');
        form.appendTo(\'body\').hide();
但我对这一部分特别好奇:

// you should achieve this using AJAX instead of direct html code like this

我在其他教程和其他插件中看到过这一点。。。。但我所看到的一切都是以这种硬编码的方式继续进行的。有人知道如何通过ajax实现这一点吗?

我想用get\\u options()中的值流行一个select下拉列表。。这在jquery/java中是做不到的,js文件也不能处理php,所以我想ajax是解决方案,我只是不知道如何开始

1 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

通过使用jQuery.ajax():

因此,与其使用大的表单变量:

$.ajax({
  type: \'GET\',
  url: \'admin-ajax.php\',
  data: { action: \'get_my_form\' },
  success: function(response){
    var table = $(response).find(\'table\'); // you don\'t seem to use this "table" var
    $(response).appendTo(\'body\').hide();
    // ...
  }
});
现在,php:

add_action(\'wp_ajax_get_my_form\',  \'get_my_form\');

function get_my_form(){
  // build your form here and echo it to the screen
  exit;
}

结束

相关推荐

Ajax, filters and shortcodes

您能理解为什么我无法在ajax帖子包含中应用短代码过滤器吗?让我更好地解释一下:我已经设法在另一篇文章中包含一篇文章,通过admin-ajax.php, 正如著名的5 tips.很明显,我不想显示快捷码标签,也不想去掉它们,所以我在回应do_shortcode($post->post_content)此时,虽然我正在运行“Cleaner gallery”插件,但post gallery会被渲染,但未被过滤add_filter( \'post_gallery\', \'cleaner_gallery\