2012-11-04 158 views
0

我正在嘗試構建訂閱表單。我無法在我的網站上運行PHP,並且我不希望用戶離開主站點訂閱通訊。我正在使用this example as server side。 如果您嘗試向您發送電子郵件,您將收到重定向,即使電子郵件已添加到mailchimp列表中,也會顯示錯誤消息。Ajax不顯示服務器響應

<div id="email"> 
<span>Your email..</span> 
<form action="http://simondahla.com/jolliassets/notify.php" id="notify" method="POST"> 
    <input type="text" placeholder="[email protected]" name="email" id="address" data-validate="validate(required, email)"/> 
    <span>We'll never spam or give this address away</span> 
    <button type="submit">&#187;</button> 
</form> 
<span id="result"></span> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#notify').submit(function() { 
     var action = $(this).attr('action'); 
     $.ajax({ 
      url: action, 
      type: 'POST', 
      data: { 
       email: $('#address').attr('value') 
      }, 
      success: function(data){ 
       $('#result').html(data).css('color', 'green'); 
      }, 
      error: function() { 
       $('#result').html('Sorry, an error occurred.').css('color', 'red'); 
      } 
     }); 
    }); 
}); 
</script> 

live example of the problem

+0

[途徑可能重複繞過同源政策](http://stackoverflow.com/questions/3076414/ways-to-circumvent-the-same-origin-policy) – Quentin

+0

Wher e是實際添加到mailchimp的代碼? –

回答

1

您需要從您提交處理程序返回false。這是爲了防止瀏覽器執行默認操作,即以正常方式提交表單。

$('#notify').submit(function() { 
    // .. your ajax call 
    return false; 
}); 
+0

謝謝!所以我改變了。所以我不會被重定向到服務器,但是我能否以某種方式將服務器響應消息傳遞給客戶端?不,它只是說,錯誤的一切,我嘗試。 – Simon

1

從你的PHP函數你要返回你想要給出的代碼的成功或失敗的值。

成功:

print json_encode(array("status"=>"success","message"=>'Successfully added')); 

失敗:

print json_encode(array("status"=>"error","message"=>'There was an error')); 

然後在HTML返回該消息是這樣的:

success: function(data){ 
      $('#result').html(content.message).css('color', 'green'); 
     }, 
     error: function() { 
      $('#result').html(content.message).css('color', 'red'); 
     } 
+0

服務器將東西寫入數據庫,但我沒有得到任何迴應。使用提供的代碼。實際上我沒有收到任何迴應。 – Simon

+0

你從哪裏得到印刷品? –