Vue.js + AJAX Shortcode

时间:2017-07-06 作者:mmarquez

我知道以前有人问过这个问题,但我找不到具体用例的实质性答案。

Overview

我一直在使用RESTAPI和Vue开发一个基于Wordpress的网站。js作为前端框架。我在获取帖子、显示数据等方面没有问题。

Issue

自Vue以来。js在客户端运行,我在使用需要在php中呈现服务器端的插件/短代码时遇到了一些问题。我正在寻找一种解决方案,在php函数中呈现一个短代码,并将呈现的数据发送到我的前端,最终使用Vue显示它。js。

JS

var http = new XMLHttpRequest();
var url = \'/wp-admin/admin-ajax.php\';
var data = { action: \'my_ajax_shortcode\' };
http.open(\'POST\', url, true);
http.setRequestHeader(\'Content-type\', \'application/x-www-form-urlencoded\');
http.onreadystatechange = function() {
    if (http.readyState == 4 && http.status == 200) {
        // response......
    }
};
http.send(data);

PHP

add_action(\'wp_ajax_my_ajax_shortcode\', \'my_ajax_shortcode()\');
add_action(\'wp_ajax_nopriv_my_ajax_shortcode\', \'my_ajax_shortcode()\');
function my_ajax_shortcode() {
    echo do_shortcode(\'[contact-form-7 id="98" title="Contact Test"]\');
    die;
}

Results

我不太熟悉Wordpress上下文中的Ajax通信,所以也许有人可以帮助我或给我一些指导。运行此代码时,我的响应通常记录为“0”。虽然我在本例中使用的是联系表单7,但我只是想掌握此操作的一般流程,以便将其应用于其他情况。

谢谢任何帮助或指点都将有助于我理解这个问题。

1 个回复
SO网友:mmarquez

我的解决方案比我想象的要简单。。。。

由于我只是尝试在前端执行短代码,所以我可以将脚本本地化并将短代码作为变量传递:

functions.php

wp_localize_script( \'BUILD-script\', \'sharedData\',
  array(
        \'ajax_url\' => admin_url( \'admin-ajax.php\' ),
        \'mailchimpForm\' => do_shortcode(\'[mc4wp_form id="100"]\'),
        \'contactForm\' => do_shortcode(\'[contact-form-7 id="98" title="Contact form 1"]\')
    )
);
基本上,我只是将短代码分配给两个变量,并使它们在我的主js包中可用。

build.js

所以现在我可以访问组件中渲染的那些短代码。

export default {
    name: \'my-component\',
    data() {
        return {
            mailchimp: \'\',
            contact: \'\'
        };
    },
    mounted() {
        this.mailchimp = sharedData.mailchimpForm;
        this.contact = sharedData.contactForm;
    }
}; 
只需使用Vue v-html指令即可呈现:

<div id="mailchimp" class="chimp--container" v-html="mailchimp"></div>
<div id="contact" class="contact--container" v-html="contact"></div>
希望这能帮助一些人!

结束
Vue.js + AJAX Shortcode - 小码农CODE - 行之有效找到问题解决它

Vue.js + AJAX Shortcode

时间:2017-07-06 作者:mmarquez

我知道以前有人问过这个问题,但我找不到具体用例的实质性答案。

Overview

我一直在使用RESTAPI和Vue开发一个基于Wordpress的网站。js作为前端框架。我在获取帖子、显示数据等方面没有问题。

Issue

自Vue以来。js在客户端运行,我在使用需要在php中呈现服务器端的插件/短代码时遇到了一些问题。我正在寻找一种解决方案,在php函数中呈现一个短代码,并将呈现的数据发送到我的前端,最终使用Vue显示它。js。

JS

var http = new XMLHttpRequest();
var url = \'/wp-admin/admin-ajax.php\';
var data = { action: \'my_ajax_shortcode\' };
http.open(\'POST\', url, true);
http.setRequestHeader(\'Content-type\', \'application/x-www-form-urlencoded\');
http.onreadystatechange = function() {
    if (http.readyState == 4 && http.status == 200) {
        // response......
    }
};
http.send(data);

PHP

add_action(\'wp_ajax_my_ajax_shortcode\', \'my_ajax_shortcode()\');
add_action(\'wp_ajax_nopriv_my_ajax_shortcode\', \'my_ajax_shortcode()\');
function my_ajax_shortcode() {
    echo do_shortcode(\'[contact-form-7 id="98" title="Contact Test"]\');
    die;
}

Results

我不太熟悉Wordpress上下文中的Ajax通信,所以也许有人可以帮助我或给我一些指导。运行此代码时,我的响应通常记录为“0”。虽然我在本例中使用的是联系表单7,但我只是想掌握此操作的一般流程,以便将其应用于其他情况。

谢谢任何帮助或指点都将有助于我理解这个问题。

1 个回复
SO网友:mmarquez

我的解决方案比我想象的要简单。。。。

由于我只是尝试在前端执行短代码,所以我可以将脚本本地化并将短代码作为变量传递:

functions.php

wp_localize_script( \'BUILD-script\', \'sharedData\',
  array(
        \'ajax_url\' => admin_url( \'admin-ajax.php\' ),
        \'mailchimpForm\' => do_shortcode(\'[mc4wp_form id="100"]\'),
        \'contactForm\' => do_shortcode(\'[contact-form-7 id="98" title="Contact form 1"]\')
    )
);
基本上,我只是将短代码分配给两个变量,并使它们在我的主js包中可用。

build.js

所以现在我可以访问组件中渲染的那些短代码。

export default {
    name: \'my-component\',
    data() {
        return {
            mailchimp: \'\',
            contact: \'\'
        };
    },
    mounted() {
        this.mailchimp = sharedData.mailchimpForm;
        this.contact = sharedData.contactForm;
    }
}; 
只需使用Vue v-html指令即可呈现:

<div id="mailchimp" class="chimp--container" v-html="mailchimp"></div>
<div id="contact" class="contact--container" v-html="contact"></div>
希望这能帮助一些人!

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct