2012-03-07 3 views
1

У меня есть следующий код jQuery, который при запуске на сервер иногда возвращает успех и иногда возвращает ошибку (запуск окна предупреждения), в зависимости от пользователя, запускающего его. Это не соответствует 100%. Что может быть неправильным? Страница загружается через iFrame на вкладке Facebook..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

+0

@jrummell Используя Firebug, страница PHP возвращает пустое и красное - есть ли способ увидеть, какой код ошибки он может вернуть? В журнале ошибок сервера отсутствуют ошибки. –

+0

@John: так это не клиент и ошибка ajax, не так ли? – zerkms

ответ

0

Понял! Ключ был Facebook - если пользователь просматривает HTTPS, страница вызывается в HTTPS, но вызов .ajax() вызывал страницу HTTP, которая устанавливается как междоменная, что недопустимо.

Ключ в том, чтобы определить, если страница рассматривается в HTTP или HTTPS в использовании этого:

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

А затем сделать соответствующий вызов AJAX, либо к HTTP или HTTPS версии.

Смежные вопросы