为什么Ajax脚本不能在本地工作?
时间:2020-03-06 14:27:57 来源:igfitidea点击:
我遇到了一个问题,即同一段代码在我的实时网站上运行良好,但在本地开发服务器上却无法正常运行。
我有一个更新div的Ajax函数。以下代码可用于实时站点:
self.xmlHttpReq.open("POST", PageURL, true); self.xmlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); self.xmlHttpReq.setRequestHeader("Content-length", QueryString.length); //..update div stuff... self.xmlHttpReq.send(QueryString);
当我尝试在本地计算机上运行此命令时,没有任何内容传递给QueryString。
但是,令人困惑的是,以下代码在本地运行:
self.xmlHttpReq.open("POST", PageURL+"?"+QueryString, true); self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); //..div update stuff.. self.xmlHttpReq.send(QueryString);
但是,我无法使用可在本地计算机上运行的代码,因为它无法在实时服务器上运行(出于安全原因,他们已更改了对查询字符串的策略)!
我可以将Querystring发出警报,以便知道它已传递到本地计算机的函数中。我唯一能想到的是这是硬件/更新问题。
Live Site正在运行IIS 6(我认为是在WIN 2003机器上)
本地站点正在运行IIS 5.1(在XP Pro上)
是否有一些更新或者我缺少的东西?
解决方案
我们是否有理由在第一个示例中明确设置" Content-Length"标头?我们...不需要这样做,而且我发现它会引起问题也不会感到惊讶。
哦,请检查编码例程。对于查询字符串和POST表单数据,规则并不完全相同。
我猜想Shog9是正确的,并且IIS 6我足够聪明,可以忽略请求并发送正确的标头,而5.2会引发错误。