我们正面临着一个特殊的问题,即ajax请求没有使用jquery发送。 有趣的是,它适用于IE8,但不适用于以下版本。 我已经尝试了其他相关帖子中提到的大多数事情,但没有成功。
可能是我在这里错过了一些大事。但IE似乎从功能和css dev的角度来创造了很多麻烦。 :(
我们的网络应用程序基于rails。
任何帮助/指针都会很棒。
感谢。
jQuery.ajaxSetup({
cache: true,
'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
});
$(document).ajaxSend(function(event, request, settings) {
if (typeof(AUTH_TOKEN) == "undefined") return;
if ( settings.type != 'GET' && settings.type != 'get') {
settings.data = settings.data || "";
settings.data = (settings.data ? settings.data + "&" : "")
+ "authenticity_token=" + encodeURIComponent( AUTH_TOKEN );
}
});
$(document).ready(function(){
$(".signup").live('click', function() {
var a_key = $('#f_auths').find('input[name="a_key"]').val();
var a_uid = $('#f_auths').find('input[name="a_uid"]').val();
var a_provider =$('#foreign_auths').find('input[name="a_provider"]').val();
$(this).closest('form').find('input[name="user[provider]"]').val(a_provider);
$(this).closest('form').find('input[name="user[key]"]').val(a_key);
$(this).closest('form').find('input[name="user[uid]"]').val(a_uid);
$.ajax({
url: "/users",
type: 'POST',
data: $(this).closest('form').serialize() ,
beforeSend: function(){
$('#loading').css('display','block');
},
success: function(){
$('loading').css('display','none');
},
});
return false;
});
答案 0 :(得分:1)
我之前也遇到过麻烦。在我的例子中,更改Ajax调用中的“类型”设置修复了它。我记得另一个案例,我的服务器实际上将一个稍微错误的mimetype发送回客户端,因此请仔细检查从服务器脚本发回的内容类型。希望可能有一些帮助。
答案 1 :(得分:1)
如果您在选项中返回脚本调试复选框,安装Internet Explorer Developer Toolbar将有助于找出JavaScript问题。
答案 2 :(得分:1)
在最后一个参数(成功)之后删除尾随逗号(,)。它打破了IE 7。
答案 3 :(得分:0)
我曾经遇到过jQuery和ajax请求的问题,其中IE7在解析url中的'#'字符时遇到问题。摆脱了#一切按预期工作。