我有以下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.');
}
});
});
});
答案 0 :(得分:0)
知道了!关键是Facebook - 如果用户正在使用HTTPS进行浏览,则会在HTTPS中调用该页面 - 但是,.ajax()
调用正在调用HTTP页面,该页面被设置为跨域,这是不允许的。
关键是确定是使用以下方式在HTTP或HTTPS中查看页面:
if (!empty($_SERVER['HTTPS'])) {
// https is enabled
}
然后对HTTP或HTTPS版本进行适当的AJAX调用。