2012-01-31 6 views
1

私は単純なサインアップメーリングリストのフォームを持っています。ユーザーの電子メールアドレスをstore-address.phpファイルに送信します。 jQueryのajaxオブジェクトを使用してPHPファイルにリクエストを送信し、応答を受け取ります。PHPファイルが正しく設定されていてもAjaxレスポンスはありません

問題は、私は、PHPファイルからの応答を取得していないです。リクエストでキャッシュをfalseに設定しようとしました。

http://www.fifthtribe.com/inc/store-address.php?ajax=true&cache=false&email=test4%40gmail.com

私はそれが動作してくれREPONSEを与えるそのようにそれを行う:私もそうのようなURLを介して情報を送信しようとしました。しかし、私がAJAXを通してそれをするとき、それは私に応答を与えません。これはFirebugのである:

enter image description here

enter image description here

enter image description here

そしてここでは、私のコードからの抜粋です:

HTML:

<div id="mlist"> 
<form id="mlist_form" method="POST" action=""> 
    <input type="text" id="email" name="email" placeholder="Email" /> 
    <input type="submit" id="submit_btn" value="Join" /> 
</form> 
<div id="response"></div> 
</div> 

はJQuery:

/* Add to mailing list */   
$("#mlist_form").submit(function(e){ 
    //$('#response').append('<div id="thanks-mce"><div id="mce-arrow"></div>Thanks for signing up!</div>'); 
    var email = escape($('#email').val()); 
    e.preventDefault(); 

    data = { 
     "ajax" : "true", 
     "email" : email, 
     "cache" : "false" 
} 

    $.ajax({ 
      type: "POST",   
      url: 'inc/store-address.php', 
      data: data, 
      success: function(msg){ 
       // successfully signed up 
       $('#response').html(msg); 
       $('#email').val(''); 
      }, 
      error: function(err){ 
       // error while signing up 
       $('#response').html('Error: Is your email correct?'); 
      } 
    }); 

    return false; 

}); 

PHP: 関数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'); 
    // grab an API Key from http://admin.mailchimp.com/account/api/ 
    $api = new MCAPI('xxxxxxxxxxxxxxxxxxxxxxxxxxxxx-us4'); 

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

    if($api->listSubscribe($list_id, $_GET['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($_GET['ajax']){ echo storeAddress(); } 
?> 
+1

は 'ますprint_r($ _ REQUEST)してみてください;'とあなたのデータは –

答えて

4

あなたのPHPスクリプトはGETメソッドを使用していますが、jQueryコードはPOSTメソッドを使用していることがわかりますか?

情報は、PHPに掲載されている場合、PHPはそれを取得するために$_POSTを使用する必要があります。これは、$_GETを使用するURLメソッドが機能するが、jQuery POSTを使用しない理由を説明しています。

幸運を祈る!

+0

感謝があることを確認してください。私はそれが私が見落としたものであったに違いないことを知っていた。それは常に目の第二のペアを取得するのに役立ちます。 –

2

あなたの代わりに$ _POSTの$ _GETを使用しているように見えます。 $ _REQUESTの内容をエコーアウトして、その内容を確認してください。

1

スクリプトをデバッグしてください!

置き、スクリプトの成功とエラーの部分で警告し、その後あなたはAJAXが動作しているかどうかを知ることができます。

もしそうでなければ、ドキュメントを上手く処理して問題のどこにあるかを確認することができます。また

、ここでのエラーは非常に簡単です。 PHPで$ _GETを使用していて、AJAXを使用してデータをポスティングしていますが、これはエラーを表示しません。 PHPドキュメントはパラメータを与えられていないため、リクエストを処理しません。 PHPコードで

関連する問題