2012-03-07 50 views
1

我有以下jQuery代碼,當運行到服務器時,有時會返回成功,有時會返回錯誤(運行警告框),具體取決於運行它的用戶。這不是100%一致的。什麼可能是錯的?該頁面通過Facebook標籤中的iFrame加載。.ajax()有時會返回錯誤,有時候不會有

entryform.php有時會回顯並返回一條消息,並在其他情況下返回一個失敗,導致.ajax()觸發錯誤。服務器端腳本中沒有任何內容看起來很腥 - 它的設置始終會返回一條成功的消息。任何從jQuery代碼中伸出的東西?

頁面返回200 OK狀態,但在Firebug中顯示爲紅色。我錯過了什麼錯誤?

的jQuery:

$(document).ready(function() { 
    $('#entryform_submit').click(function(e) { 
     e.stopImmediatePropagation(); 
     e.preventDefault(); 

     $('#entryform_submit_loader').show(); 

     var form_data = $('#entryform_form').serialize(); 
     $.ajax({ 
      url:'http://www.myurl.com/entryform.php', 
      type:'POST', 
      data:form_data, 
      success:function(return_data){ 
      //do stuff   
      }, 
      error:function(w,t,f){ 
       alert('Error submitting entry. Please try again later.'); 
      } 
     }); 
    }); 
}); 
+1

什麼是你有時看到的PHP錯誤? – jrummell 2012-03-07 20:04:56

+0

@jrummell使用Firebug,PHP頁面返回空白,紅色 - 是否有辦法查看它可能返回的錯誤代碼?服務器錯誤日誌中沒有出現錯誤。 – 2012-03-07 20:07:18

+0

@John:所以它不是客戶端和AJAX錯誤,是嗎? – zerkms 2012-03-07 20:09:04

回答

0

明白了!關鍵是Facebook - 如果用戶使用HTTPS進行瀏覽,則頁面被HTTPS調用 - 但是,.ajax()調用正在調用HTTP頁面,該頁面被設置爲跨域,這是不允許的。

的關鍵是確定頁面在HTTP或HTTPS中使用這種被查看:

if (!empty($_SERVER['HTTPS'])) { 
    // https is enabled 
} 

然後進行適當的AJAX調用,無論是HTTP或HTTPS版本。

相關問題