如何从wordpress rest api访问表单对象

时间:2018-03-28 14:01:52

标签: ajax wordpress wordpress-rest-api

我正在使用这个ajax调用params来传递数据:

var formData = new FormData();

formData.append('file', selectedFile);
formData.append('subject', 'test subject');
formData.append('message', 'test message');

url: 'my/endpoint',
type: 'POST',
data: formData,
cache: false,
contentType: false,
enctype: 'multipart/form-data',
processData: false

这是我的终点:

function test_endpoint(WP_REST_Request $request){
   return $request->get_body();
   //return wp_mail( $to, $subject, $body, $headers, $attachments );
}

我可以看到数据:

enter image description here

所以基本上我正在尝试访问表单参数,以便将它们放入电子邮件中。我无法确定如何访问文件,主题和消息?

2 个答案:

答案 0 :(得分:0)

使用Wordpress时,您无法或至少不应直接调用ajax。 内置了一种机制来处理ajax调用。

或多或少你要做的是:

写入触发ajax调用时将在服务器上执行的函数,然后将其绑定到ajax回调操作。

add_action( 'wp_ajax_nopriv_myaction', 'my_ajax_processing_func' );  
add_action( 'wp_ajax_myaction', 'my_ajax_processing_func' );

function my_ajax_processing_func() {
    <Your processing here>
}

请注意&#39; myaction &#39;参与add_action()。在从客户端发送的表单数据中,必须为此标识设置action参数( myaction )才能进行绑定。

同样,在url必须设置为admin_url( 'admin-ajax.php' )的格式中。获取此URL的方法是使用wp_localized_script()将其下载到js脚本。

您可以在此处找到完整说明: Using AJAX With PHP on Your WordPress Site Without a Plugin

出于安全原因,还要删除本文以向表单添加nonce。 How to Add a WordPress AJAX Nonce

答案 1 :(得分:0)

我发现这是我的阿贾克斯。所以我转而直接使用XHR,它起作用了:

 var xhr = new XMLHttpRequest();
 xhr.open('POST', 'my/endpoint', true);
 xhr.onload = function () {
    console.log('response',JSON.parse(this.responseText));
 };
xhr.send(formData);