Почему не загружается мой вызов AJAX? - PullRequest
1 голос
/ 19 февраля 2010

Я работаю над интеграцией с 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(); }
?>

Сценарий изначально был написан для отправки через Ajax в Prototype, и я пытаюсь перенести вещи в jQuery. Я хотел бы знать, чего я не понимаю, чтобы это произошло.

Дополнительная информация: Если это какая-либо помощь, следующий вызов работает, если он в моем HTML, если я полностью удалил JavaScript:

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

Ответы [ 2 ]

0 голосов
/ 19 февраля 2010

Тьфу.При работе с Ajax НЕ пытайтесь использовать относительные пути.Это была вся моя проблема.Просто нужно указать URL на абсолютный путь.Спасибо за вашу помощь.

0 голосов
/ 19 февраля 2010

Проблема в том, что вы проверяете, установлена ​​ли переменная POST с именем 'ajax', но установлена ​​только 'email'.

Вы можете решить эту проблему, проверив email напрямую:

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

или если на странице есть только одно действие:

if(isset($_POST)) { echo storeAddress(); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...