我使用AngularJS构建一个AJAX表单,然后在运行Wordpress的服务器上进行处理。
服务器端处理程序很简单:
function rnr_contact_callback() {
$name = $_POST[\'firstName\'] . \' \' . $_POST[\'lastName\'];
wp_mail(
\'[email protected]\',
\'Contact form submitted\',
$name . \'(\' . $_POST[\'email\'] . \') sent a message: \' . $_POST[\'comment\']
);
exit;
}
客户端控制器:
angular.module(\'app\').controller(\'ContactForm\', function($scope, $http) {
$scope.sendContactForm = function() {
$http({
method: \'POST\',
url: \'/wp-admin/admin-ajax.php\',
params: {
action: \'contact\',
firstName: $scope.userFirstName,
lastName: $scope.userLastName,
email: $scope.userEmail,
comment: $scope.userComment
}
}).success(function(data, status, headers, config) {
$scope.contactFormSent = true;
}).error(function(data, status, headers, config) {
});
};
});
我测试了
$scope
一致性,没关系。此外,还处理了POST请求:我收到一封电子邮件。问题是,电子邮件正文看起来像:
() sent a message:
. 我的结论是,在服务器上
$_POST[\'...\']
已设置。为什么?我做错了什么?