如何使用 PHP+JS 获取要保存到邮件列表的名称
How to get name to save to mailchimp list with PHP+JS?
即使
我在表格上输入了我的名字,我也只能得到电子邮件地址。请原谅我不是编码专家。我只知道基本的html,我只是得到一些我在互联网上找到的代码。
我的时事通讯表单如下所示:
<form id="subscribe" class="form" action="<?=$_SERVER['PHP_SELF']; ?>" method="post">
<div class="form-group form-inline">
<input size="15" type="text" class="form-control required" id="NewsletterName"
name="NewsletterName" placeholder="Your name" />
<input size="25" type="email" class="form-control required" id="NewsletterEmail"
name="NewsletterEmail" placeholder="your@email.com" />
<input type="submit" class="btn btn-default" value="SUBSCRIBE" />
<span id="response">
<? require_once('assets/mailchimp/inc/store-address.php'); if($_GET['submit']){ echo
storeAddress(); } ?>
</span>
</div>
</form>
我的JS文件看起来像这样:
jQuery(document).ready(function() {
jQuery('#subscribe').submit(function() {
// update user interface
jQuery('#response').html('<span class="notice_message">Adding email address...</span>');
var name = jQuery('#NewsletterName').val().split(' ');
var fname = name[0];
var lname = name[1];
if ( fname == '' ) { fname=""; }
if ( lname == '' || lname === undefined) { lname=""; }
// Prepare query string and send AJAX request
jQuery.ajax({
url: 'assets/mailchimp/inc/store-address.php',
data: 'ajax=true&email=' + escape(jQuery('#NewsletterEmail').val()),
success: function(msg) {
if (msg.indexOf("Success") !=-1) {
jQuery('#response').html('<span class="success_message">Success! You are now
subscribed to our newsletter!</span>');
} else {
jQuery('#response').html('<span class="error_message">' + msg + '</span>');
}
}
});
return false;
});
});
我的PHP文件看起来像这样:
<?php
function storeAddress(){
require_once('MCAPI.class.php'); // same directory as store-address.php
// grab an API Key from http://admin.mailchimp.com/account/api/
$api = new MCAPI('mymailchimpapi');
$merge_vars = Array(
'EMAIL' => $_GET['email'],
'FNAME' => $_GET['fname'],
'LNAME' => $_GET['lname']
);
// grab your List's Unique Id by going to http://admin.mailchimp.com/lists/
// Click the "settings" link for the list - the Unique Id is at the bottom of that page.
$list_id = "myuniqueid";
if($api->listSubscribe($list_id, $_GET['email'], $merge_vars , $_GET['emailtype']) === true) {
// It worked!
return 'Success! Check your inbox or spam folder for a message containing a
confirmation link.';
}else{
// An error ocurred, return error message
return '<b>Error:</b> ' . $api->errorMessage;
}
}
// If being called via ajax, autorun the function
if($_GET['ajax']){ echo storeAddress(); }
?>
我不知道我是否也应该添加
if($api->listSubscribe($list_id, $_GET['fname'], $merge_vars , $_GET['fname']) === true)
在 PHP 文件上。有谁知道问题出在哪里?还是JS文件中有问题?
ajax 查询字符串仅包含ajax=true&email=
因此$_GET['fname']
未定义。如果您在服务器上对用户输入进行一些安全验证,这将有所帮助
从表单编译数据的更简单方法是使用serialize()
jQuery('#subscribe').submit(function() {
var formData= $(this).serialize() ;
jQuery.ajax({
url: 'assets/mailchimp/inc/store-address.php',
data: formData,
success: function(....
........................
return false;
});
参考:序列化(( API 文档
固定!!!感谢Charlietfl指出问题。我在谷歌上搜索了那部分,并能够找到解决方案。我尝试添加 serialize(( 代码,但它在单击提交按钮时出现页面错误。
我在我的 JS 文件中添加了这个:
data: 'ajax=true&email=' + escape(jQuery('#NewsletterEmail').val()) + '&fname=' + escape(jQuery('#NewsletterName').val()),
所以整个代码是:
jQuery(document).ready(function() {
jQuery('#subscribe').submit(function() {
// update user interface
jQuery('#response').html('<span class="notice_message">Adding email address...</span>');
var name = jQuery('#NewsletterName').val().split(' ');
var fname = name[0];
var lname = name[1];
if ( fname == '' ) { fname=""; }
if ( lname == '' || lname === undefined) { lname=""; }
// Prepare query string and send AJAX request
jQuery.ajax({
url: 'assets/mailchimp/inc/store-address.php',
data: 'ajax=true&email=' + escape(jQuery('#NewsletterEmail').val()) + '&fname=' +
escape(jQuery('#NewsletterName').val()),
success: function(msg) {
if (msg.indexOf("Success") !=-1) {
jQuery('#response').html('<span class="success_message">Success! You are now
subscribed to our newsletter!</span>');
} else {
jQuery('#response').html('<span class="error_message">' + msg + '</span>');
}
}
});
return false;
});
});
相关文章:
- 保存串行端口列表与流星
- 从下拉列表中获取所选项目,并将其保存到php变量中
- 如何强制用户从下拉列表和按钮中选择一个值以启用保存按钮
- 如何在不干扰电子邮件通知的情况下将眼镜保存在文本文件中
- 将 ul 列表保存到 json 对象中
- 如何阻止浏览器要求在注册表单中保存电子邮件和密码
- 主干将模型列表保存到集合
- SharePoint 2010 和电子邮件列表视图
- JQuery UI 可排序和 Laravel,将列表保存到数据库
- 如何使用 PHP+JS 获取要保存到邮件列表的名称
- 将文件列表保存到 $.cookie
- 将播放列表保存到所需位置
- 通过JavaScript从CRM 2011检索可排序电子邮件列表
- AngularJS:如何创建一个模型,该模型为输入字段的动态列表保存一个数组
- 电子邮件列表/集合使用下划线/短划线进行混洗和配对
- 验证逗号分隔的电子邮件列表
- JavaScript列表保存问题
- 如何获得阅读和未读邮件列表使用gmail API javascript
- 验证多个电子邮件列表
- 如何以编程方式向雷鸟中的所有邮件列表视图添加列