【发布时间】:2015-01-27 04:37:12
【问题描述】:
我正在编写一个与 MailChimp 的 API 集成的 wordpress 插件,用于将电子邮件地址存储在 MailChimp 列表中。
我有一个通过 AJAX 在提交表单时运行的“store-address.php”。
该插件在 本地 或 GoDaddy WordPress 安装上对 url 进行 AJAX 处理时有效。但不适用于托管在“MediaTemple.net”上的临时站点。
当我对“store-address.php”进行 ajax 调用时,我收到此错误...
解析错误:语法错误,第 1 行 /wp-content/plugins/plugin-name/mailchimp-api/inc/store-address.php 中的意外 {
这是我的 ajax 函数
$('#subscribe').submit(function(e) {
$.ajax({
url: $plugin_url '/plugin-name/mailchimp-api/inc/store-address.php',
data: 'ajax=true&email=' + escape($('#email').val()),
success: function(msg) {
$('#response').html(msg);
}
});
return false;
});
我的“store-address.php”看起来像这样。
<?php
if(session_id()==''){
session_start();
}
function storeAddress(){
/*
* Validation
*/
if(!$_GET['email']){ return "No email address provided"; }
if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i", $_GET['email'])) {
return "Email address is invalid";
}
require_once('MCAPI.class.php');
/*
* get MailChimp API details from the plugin settings stored in the session.
*/ $mcKey = $_SESSION['mc_api_key'];
$mcID = $_SESSION['mc_list_id'];
$api = new MCAPI($mcKey);
$list_id = $mcID;
if($api->listSubscribe($list_id, $_GET['email'], '') === true) {
return 'Success! Check your email to confirm sign up.';
}else{
return 'Error: ' . $api->errorMessage;
}
}
/*
* If being called via ajax, autorun the function
*/
if($_GET['ajax']){ echo storeAddress(); }
?>
php版本 5.5
正如我之前提到的,此代码适用于本地环境和 goDaddy 托管站点。只是不在MediaTemple上我也扫过代码有没有PHP语法错误,什么都找不到。
任何帮助或指出正确的方向都是天赐之物。 谢谢
【问题讨论】:
-
这是通过
include或require包含在另一个文件中的吗? -
不,我在上述函数中使用jQuery AJAX调用文件
-
是的,我看到了,但我也看到这是一个 Wordpress 网站,这意味着在您到达这一步之前,还有很多其他的东西正在运行。 PHP 中的错误
unexpected $end表示大括号、圆括号或方括号在您的代码中的某处不匹配;我敢打赌,实际上是在您访问此文件之前。 -
可能是个愚蠢的建议,但您可以尝试将
session_start();放入storeAddress()中吗? -
"Line 1" 表示不正确的换行符。在 Mac 上开发时,您必须使用 LF 而不是 CR 保存文件。
标签: php jquery ajax wordpress apache