.ajax()有时返回错误,有时不返回错误

时间:2012-03-07 20:02:17

标签: php jquery facebook

我有以下jQuery代码,当运行到服务器时,有时会返回成功,有时会返回错误(运行警报框),具体取决于运行它的用户。它并非100%一致。可能有什么不对?该页面通过Facebook标签中的iFrame加载。

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 个答案:

答案 0 :(得分:0)

知道了!关键是Facebook - 如果用户正在使用HTTPS进行浏览,则会在HTTPS中调用该页面 - 但是,.ajax()调用正在调用HTTP页面,该页面被设置为跨域,这是不允许的。

关键是确定是使用以下方式在HTTP或HTTPS中查看页面:

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

然后对HTTP或HTTPS版本进行适当的AJAX调用。