Javascript AJAX未通过IE7/IE8中的POST变量
请注意:回答“使用jquery”或“使用(插入知名框架)”没有帮助。像jquery这样的框架包含了大量额外的代码,这对于我现在所做的工作来说根本不是必需的但是,你可以包括一个来自谷歌的,是的,可能是这样,但我更喜欢保留我自己的代码。考虑到这一点,让我们继续讨论这个问题 我有一个ajax调用,它不会在IE7/IE8上传递POST VAR,但只在偶尔的情况下传递。它看起来是非常随机的,而且大部分时间它确实有效 我已经看过jquery,但与这个定制的jquery相比,它的工作方式并没有什么不同 以下是ajax函数:Javascript AJAX未通过IE7/IE8中的POST变量,javascript,ajax,internet-explorer,post,Javascript,Ajax,Internet Explorer,Post,请注意:回答“使用jquery”或“使用(插入知名框架)”没有帮助。像jquery这样的框架包含了大量额外的代码,这对于我现在所做的工作来说根本不是必需的但是,你可以包括一个来自谷歌的,是的,可能是这样,但我更喜欢保留我自己的代码。考虑到这一点,让我们继续讨论这个问题 我有一个ajax调用,它不会在IE7/IE8上传递POST VAR,但只在偶尔的情况下传递。它看起来是非常随机的,而且大部分时间它确实有效 我已经看过jquery,但与这个定制的jquery相比,它的工作方式并没有什么不同 以下是
function GetXmlHttpObject(handler){
var objxml = null;
if(handler==null) {
handler = function() {}
}
var ProgID = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
try {
objxml = new XMLHttpRequest();
}
catch(e) {
for (var i = 0; i < ProgID.length; i++){
try {
objxml = new ActiveXObject(ProgID[i]);
}
catch(e) {
continue;
}
}
}
objxml.onreadystatechange=handler;
return objxml;
}
我看了一下jquery,看不出它的工作方式与这个定制的有多大区别。使用。它简洁、不言自明,适用于所有浏览器。虽然没有太多帮助,但这篇文章似乎非常详细:如果参数只是有时无法发送,问题可能出在以下几行:
params = "object_type="+object_type+"&object_id="+object_id;
参数没有被转义。试试这个:
params = "object_type=" +
encodeURIComponent(object_type) +
"&object_id=" +
encodeURIComponent(object_id);
我在jquery中遇到了类似的问题,post参数无法通过。这更多地与asp.net读取post参数的方式有关。
下面的文章演示了如何直接从请求的输入流中提取post参数。希望它能有所帮助我记不起曾经见过像“application/x-www-form-URLencoded”这样的大写字符的内容类型,我也不知道它是否符合规范。但是,我见过PHP因为请求中缺少内容类型头而忽略帖子。(由于一名代理人决定将其排除在外) PHP忽略它无法识别的任何内容类型。这将修复任何问题的可能性很小,但您可以尝试将
URL
更改为URL
试试
在php中,若要获取ASP.net guy之类的输入变量,请给出处理程序函数的代码示例。如果“If Modified Since”是POST的有效标头,可能应该将其删除。@naikus yes如果在Http1.1规范中进行了修改,一个简单的谷歌会为您找到它。@David:您的参数有时可能包含需要URL编码的数据吗?另外,关于你问题中关于jQuery的注释;jQuery实际上默认在原生XMLHttpRequest对象上使用ActiveX实现。也许这样做可以解决您的问题。@David:您能将失败的情况与特定的用户、值、浏览器版本或代理联系起来吗?事情很少是随机的。看看这个,发送请求的实际方式和我现在的方式没有什么不同。唯一的区别是他们把它放在了一个类中。澄清一下:我并不是说你在使用PHP,问题就在这里,只是端到端链中有几个部分可能会进行一些健全性检查(例如代理)并造成麻烦。
params = "object_type=" +
encodeURIComponent(object_type) +
"&object_id=" +
encodeURIComponent(object_id);