2010-02-18 51 views
1

我正在整合MailChimp API以通过Ajax提交表单,但我在整合它们提供的表单时遇到了很多麻烦。我认为这是一个很好的机会让我了解更多关于Ajax的知识,但是我不能在我的生活中找出我的电话出错的地方。下面是我在我的Ajax调用:为什么不是我的AJAX呼叫加载?

$('#submit-button').click(function(){ 
    var email = $('input#email').val(); 
    if(email == "[email protected]"){ 
    $('p#empty-error').fadeIn(); 

    return false; 
    } 

    var datastring1 = 'email=' + email; 

    $.ajax({ 
    type: 'POST', 
    url: 'mailchimp/store-address.php', 
    data: datastring1, 
    success: function(){ 
    alert('success'); 
    } 
    }); 

    return false; 
}); 

而且PHP文件沿着标签:

function storeAddress(){ 

// Validation 
if(!$_POST['email']){ return "No email address provided"; } 

if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i", $_POST['email'])) { 
    return "Email address is invalid"; 
} 

require_once('MCAPI.class.php'); 
// grab an API Key from http://admin.mailchimp.com/account/api/ 
$api = new MCAPI('66a7f17d87e96e439f7a2837e2963180-us1'); 

// 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 = "b1ebe7c0ba"; 

if($api->listSubscribe($list_id, $_POST['email'], '') === true) { 
    // It worked! 
    return 'Success! Check your email to confirm sign up.'; 
}else{ 
    // An error ocurred, return error message 
    return 'Error: ' . $api->errorMessage; 
} 

} 

// If being called via ajax, autorun the function 
if($_POST['ajax']){ echo storeAddress(); } 
?> 

剧本最初写通过Ajax的原型提交,我试图移动事情到jQuery。我很想知道我不理解做到这一点。

更多信息:如果它的任何帮助,下面的调用工作,如果它在我的HTML,如果我删除完全的JavaScript:

<?php require_once('mailchimp/store-address.php'); if($_POST['submit']){ echo storeAddress(); } ?> 
+0

你的javascript控制台给你提供任何反馈吗? – thetaiko 2010-02-18 23:18:00

+0

你得到的错误是什么?你尝试过'错误:功能(味精){警报(味精);}'? – Jason 2010-02-18 23:18:43

+0

反馈,但没有任何有助于我的知识:XHR完成加载:“http:// localhost:8888/qworky/mailchimp/store-address.php”。 – 2010-02-18 23:31:29

回答

0

唉。使用Ajax时,请勿尝试相对路径。那是我的全部问题。只需要将URL指向绝对路径即可。谢谢你的帮助。

0

的问题是,你正在检查是否POST变量命名为'ajax'已设置,但仅设置了'email'

您可以通过检查email直接解决这个问题:

if($_POST['email']) { echo storeAddress(); } 

,或者如果页面只有一个动作:

if(isset($_POST)) { echo storeAddress(); } 
+0

仍然没有,因为我交换了。不过,非常感谢这个建议。 – 2010-02-18 23:31:05