这是我对堆栈的第一个问题。
jQuery.ajax类型:发布到不在IE中启动的ashx文件。适用于FF,Chrome和Safari
以下代码:
$.ajax({
type: "Post",
url: "http://[ ... ]loguserdata.ashx?" + dataString,
data: "",
cache: "false",
contentType: "text/plain",
success: function(msg){
//alert( "Data Saved: " + msg );
}
});
在FF等工作正常我的意思是调用ashx文件并记录信息。 我可以看到fiddler,firebug和chrome等效的ajax调用。
但是在IE9或IE兼容模式下似乎没有发生jackchit。
我可以使用上面几个版本的代码在其他浏览器中工作。包括$('#result').load( ...
但是NOTHING在IE中工作
btw,在IE中本地工作正常。
哦,我不会给任何关于任何返回值的小便。并且它不是缓存问题。我在date=getTime()
的末尾添加了querystring
。
querystring (dataString)
看起来像fname=john&lname=doedy
编辑:我已经解决了这个问题。我有空的时候会在明天发布一个彻底的答案。
答案 0 :(得分:1)
长篇故事被截断: 您不能执行XMLHttpRequest交叉域。使用jQuery的getJSON方法和querystring参数& callback =?添加到网址。我相信这会将数据类型转换为JSONP。
var url = 'http://handlers.flowauto.com/eprice/loguserdata.ashx?fname=jim&callback=?';
$.getJSON(url, function(data) {
// do some stuff
});
以下是一些帮助我解决此问题的链接。
XMLHttpRequest cannot load an URL with jQuery
http://api.jquery.com/jQuery.getJSON/见下面的摘录
JSONP如果URL包含字符串“callback =?” (或类似的,如 由服务器端API定义),请求被视为JSONP 代替。请参阅$ .ajax()中有关jsonp数据类型的讨论 更多细节。
http://api.jquery.com/jQuery.ajax/见下面的摘录
附加说明:由于浏览器安全限制,大多数“Ajax” 请求受原始政策的约束;请求不能 从不同的域,子域或成功检索数据 协议。脚本和JSONP请求不受同一来源的约束 政策限制。
答案 1 :(得分:0)
检查您的IE安全性,因为它在本地工作。我猜locahost上的文件有更多权限。
编辑:
IE9防止做跨域ajax调用,Opera浏览器也是如此。 对于IE9,您可以阅读此article,以获得解决方法。它建议使用XDR(XDomainRequest)而不是通常的XMLHttpRequest。答案 2 :(得分:0)
尝试此操作,因为您没有发送POST数据:
$.ajax({
type: "GET",
url: "http://[ ... ]loguserdata.ashx?" + dataString,
cache: "false",
contentType: "text/plain",
success: function(msg){
//alert( "Data Saved: " + msg );
}
});