2013-07-02 43 views
0

我想爲內嵌訂閱小部件(您在一個文本框中鍵入您的電子郵件地址,它會訂閱你的郵件列表而無需將您重定向到其他頁面)。下面的代碼中的URL應該發送一封電子郵件,除了以json的形式發回信息之外(這些信息會告訴你電話是否成功,輸入的電子郵件是否是正確的形式,電子郵件是否已經在列表等)。下面的代碼在執行時會生成一封電子郵件(恭喜,您在列表中),但我無法收到信息(所以我不能告訴用戶以正確的格式輸入他們的電子郵件,他們的電子郵件已經在列表等)。我不確定要做什麼 - 爲了使其發揮作用,除了呼叫中的數據(電子郵件,列表編號和密鑰)之外,我無法傳遞任何內容。根據我測試的結果,使用jsonp dataType將一個「回調」函數連接到url - 在我的情況下,添加這個會破壞所有內容。跨域GET請求,打到服務器,但沒有得到迴應

任何幫助,將不勝感激。

$("subscribe-form").submit(function(e) { 

    var email = $("input-EMAIL").val(); 
    e.preventDefault(); 
    $.ajax({ 
     type: "GET", 
     crossDomain: true, 
     jsonp: false, 
     url: "https://inserturlhere/maillistsubscriber/listSubscribe", 
     data: { email: email, list_number: '#######', key: '#encoded#'}, 
     success:function(){ 
      alert("An Error Occurred. Try Again :("); 
    }, 
     error: function() { 
      $('div.invitation').html("<br><p>Thank you for submitting! Check your inbox every Friday for the newsletter!</p>") 
      .hide() 
      .fadeIn(750); 
     } 
    }); 
    return false; 
}); 
+0

你可能要做出巨大的短款,如果u需要這裏的任何答案:) – krishgopinath

+0

我假設你剛剛粘貼的代碼錯,但你成功和錯誤處理程序是相反的。 – Geoff

+0

您是否監控過實際的網絡流量,以查看請求/響應是什麼? – Geoff

回答

1

如果這是通過不同的域,簡單的ajax將無法正常工作。

你可以嘗試

jQuery.ajax({ 
      url: BotMind.messagingUrl+"send", 
      crossDomain: true, 
      dataType: "jsonp", 
      type: "GET", 

      complete: function(){ 
       //alert('complete message'); 
      }, 
      success: function(data, textStatus, jqXHR){ 
       $('div.invitation').html("<br><p>Thank you for submitting! Check your inbox every Friday for the newsletter!</p>") 
       .hide() 
       .fadeIn(750); 

      }, 
      error: function() { 
       alert("An Error Occurred. Try Again :("); 
    }, 
      statusCode: { 
       404: function() { 
        //alert("page not found"); 
       }, 
       200: function() { 
        //alert("page ok"); 
       } 
      } 
     }); 

這必將工作