Jquery 为什么不是';我的AJAX调用加载失败了吗?

Jquery 为什么不是';我的AJAX调用加载失败了吗?,jquery,ajax,api,Jquery,Ajax,Api,我正在努力与MailChimp API集成,以便通过Ajax提交表单,但集成它们提供的表单时遇到了很多困难。我认为这是一个很好的机会让我了解更多关于Ajax的知识,但我一辈子都不知道我的电话哪里出了问题。以下是我在Ajax调用中的内容: $('#submit-button').click(function(){ var email = $('input#email').val(); if(email == "you@address.com"){ $('p#empty-error'

我正在努力与MailChimp API集成,以便通过Ajax提交表单,但集成它们提供的表单时遇到了很多困难。我认为这是一个很好的机会让我了解更多关于Ajax的知识,但我一辈子都不知道我的电话哪里出了问题。以下是我在Ajax调用中的内容:

 $('#submit-button').click(function(){
  var email = $('input#email').val();
  if(email == "you@address.com"){
   $('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(); }
?>
该脚本最初是在Prototype中通过Ajax编写的,我正在尝试将内容转移到jQuery。我很想知道我不明白的是什么让这一切发生

更多信息:如果有任何帮助,如果我完全删除了javascript,则以下调用在我的HTML中有效:

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

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

您可以通过直接检查
电子邮件
来解决此问题:

if($_POST['email']) { echo storeAddress(); }
或者,如果页面只有一个操作:

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

啊。使用Ajax时,不要尝试相对路径。这是我的全部问题。只需要将URL指向绝对路径。感谢您的帮助。

您的javascript控制台是否向您提供了任何反馈?您遇到了什么错误?您是否尝试过
错误:函数(msg){alert(msg);}
?反馈,但对我所知没有任何帮助:XHR已完成加载:“”。Jason,我没有尝试过。我很抱歉,在我的Ajax通话中会出现这种情况吗?如果是这样的话,我从来没有听说过其中的“error”参数。当我把它换掉时,仍然什么都没有。不过,非常感谢你的建议。