1

我正在尝试从在 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 的数据合并。我需要的任何其他信息请告诉我。提前致谢。

4

1 回答 1

0

背景:

jQuery 有一个.serialize()方法:

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

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

例如,您可以这样做:

$('form').serialize()

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

.serialize()jqAPI上的文档

填写发送回调:

"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():此方法将序列化表单中存在的所有 Successl HTML 控件,并将它们作为数据附加到 AJAX 查询中。

这里只是缺少验证 AJAX 请求的随机数检查,我没有把它放在那里以使代码简单。

然后在 WordPress PHP 后端,您必须捕获序列化该数据,以便按照您的喜好处理它。

希望能帮助到你。

于 2013-08-14T20:49:42.517 回答