通过Wordpress中的JQuery/Ajax发送自定义数据


Email custom data through JQuery / Ajax in Wordpress

我正试图从一个在jquery弹出式电子邮件中显示特定帖子的页面发送一些自定义帖子数据。

目前,我已经完成了HTML表单和JQuery模态框的设置。

这是这个js代码:

jQuery(document).ready(function($){
var email = $( "#email" ),
message = $( "#message" ),
allFields = $( [] ).add( email ).add( message ),
tips = $( ".validateTips" );
$( ".email-course" )
        .button()
        .click(function() {
                $( "#dialog-form" ).dialog( "open" );
});
$( "#dialog-form" ).dialog({
    autoOpen: false,
modal: true,
width: 550,
height:260,
resizable: false,
show: 'fade',
title: 'Email course',
    buttons: {
    "Send": function() {
        //Need help here
    },
    Cancel: function() {
    $( this ).dialog( "close" );
    }
    },
    close: function() {
    allFields.val( "" ).removeClass( "ui-state-error" );
    }
});
});

HTML表单:

<div id="dialog-form" title="Email this course">
    <form>
        <fieldset>
            <label for="email">To:</label>
            <input type="text" name="email" id="email" value="" class="text ui-widget-content ui-corner-all" />
            <label for="email">From:</label>
            <input type="text" name="email" id="email" value="" class="text ui-widget-content ui-corner-all" />
            <label for="message">Message (optional)</label>
            <input type="text" name="message" id="message" value="" class="text ui-widget-content ui-corner-all" />
        </fieldset>
    </form>
</div>

和按钮:

<div class="right"><button class="email-course">Email this course</button></div>

我的问题是如何从表单中读取数据,我还必须从加载这些数据的页面中提取一些带有id的帖子数据,并通过Wordpress的wp_email发送?我还必须将"消息(可选)"与特定帖子ID的数据合并。我需要任何其他信息,请告诉我。提前谢谢。

背景:

jQuery有一个.serialize()方法:

将一组表单元素编码为字符串以供提交。

使用此方法,您可以序列化所有字段值,而不必单独收集它们。

例如,你可以做:

$('form').serialize()

并且您将获得一个包含所有收集的表单字段的字符串&值,则可以将此字符串传递给$.ajax请求中的data: {}对象中的服务器。

jqAPI 上的.serialize()文档

填写发送回调:

"Send": function() {
     //Need help here
     $.ajax({
         data        : $('#dialog-form form').serialize(),
         error       : function (jqXHR, textStatus:string, errorThrown:string) {
                     if (errorThrown) {
                           // Show message.
                     }
           },
         success     : function (response_from_server:ResponseFromServer, statusText:string, xhr) {
                     // Do post-processing here.
           },
         type        : 'POST',
         url         : ajaxurl
    });
},

此处:

ajaxurl:WordPress设置的javascrip全局变量,用于指向"/wp-admin/admin-AJAX.php"的AJAX查询

$('#dialog form form').serialize():此方法将序列化表单中存在的所有Successfull HTML控件,并将它们作为数据附加到AJAX查询中。

这里只是缺少了验证AJAX请求的nonce检查,我把它放在那里并不是为了简化代码。

然后,在WordPress PHP后端,您必须捕获并序列化数据,以便按照自己的意愿进行处理。

希望能有所帮助。