在JQuery / php中选择编辑短代码

时间:2017-01-25 11:06:34

标签: php jquery ajax wordpress shortcode

我有一个表格短代码,应根据选择框中的值进行编辑,但我无法使其工作。我到目前为止:

短代码语法:[table id=tableID filter="filterstring" \],其中可以省略滤镜部分。

HTML:

<div>
<select class="filter-products">
<option value="all">All</option>
<option value="product1">product1</option>
<option value="product2">product2</option>
</select>
<div class="filter-table-doc">[table id=Doc /]</div>
</div>

jquery的:

var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";

jQuery(".filter-products").on( "change", function() {

    var productTypeNew = jQuery(".filter-products").attr("value");

    jQuery.ajax({
        url: ajaxurl,
        data: {
            'action':'get_table_doc_shortcode',
            'product' : productTypeNew
        },
        success:function(data) {
            jQuery(".filter-table-doc").html(data);

        },
        error: function(errorThrown){
            console.log(errorThrown);
        }
    });
});

PHP:

function get_table_doc_shortcode(){
    if ( isset($_REQUEST) ) {

        $product = $_REQUEST['product'];

        if ( $product == 'all' ) {
            $product = '[table id=Doc /]';
        }
        else {
            $product = '[table id=Doc filter="' + $product + '" /]';
        }

        return $product;
    }
   die();
} 
add_action('wp_ajax_get_table_doc_shortcode', 'get_table_doc_shortcode');
add_action('wp_ajax_nopriv_get_table_doc_shortcode', 'get_table_doc_shortcode');

这会在日志中生成错误; GET http://www.myurl.com/%3C?php%20echo%20admin_u…n-ajax.php%27);%20?%3E&action=get_table_doc_shortcode&product=product1 404 (Not Found)

现在我感到完全陷入困境,已经浪费了太多时间。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

看起来您的Javascript是在.js文件而不是.php文件中调用的。这意味着您使用的PHP功能无法正常工作。您看到的错误是因为JS正在读取"<?php echo admin_url('admin-ajax.php'); ?>"的字符串值而不是您想要的ajax网址。如果您正在尝试访问admin-ajax.php的网址,请按照docs

  

从版本2.8开始,可以使用JavaScript全局变量ajaxurl,以防您希望将JavaScript代码与php文件分离为仅JavaScript文件。 仅在管理方面这是真的。

因此,只需从代码中删除行var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";,因为ajaxurl已全局定义。