我正在使用这个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 );
}
我可以看到数据:
所以基本上我正在尝试访问表单参数,以便将它们放入电子邮件中。我无法确定如何访问文件,主题和消息?
答案 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);