0

我有一个问题,同一段代码在我的实时网站上运行良好,但在我的本地开发服务器上却没有。

我有一个更新 div 的 Ajax 函数。以下代码适用于实时站点:

self.xmlHttpReq.open("POST", PageURL, true);
self.xmlHttpReq.setRequestHeader("内容类型", "application/x-www-form-urlencoded");
self.xmlHttpReq.setRequestHeader("内容长度", QueryString.length);
//..更新 div 的东西...
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 更新内容..
self.xmlHttpReq.send(QueryString);

但是,我不能使用在我的本地机器上运行的代码,因为它在实时服务器上不起作用(出于安全原因,他们已经更改了查询字符串的策略)!

我可以提醒查询字符串,所以我知道它已传递到我本地机器上的函数中。我唯一能想到的是这是一个硬件/更新问题。

Live Site 正在运行 IIS 6(我认为是在 WIN 2003 机器上)

本地站点正在运行 IIS 5.1(在 XP Pro 上)

是否有一些更新或我缺少的东西或什么?

4

2 回答 2

1

您是否有理由Content-Length在第一个示例中明确设置标题?你......不应该这样做,我不会惊讶地发现它会导致问题。

哦,检查你的编码程序。查询字符串和 POST 表单数据的规则并不完全相同

于 2008-09-19T21:35:06.207 回答
0

我猜 Shog9 是对的,并且 IIS 6 我足够聪明,可以忽略您的请求并发送正确的标头,而 5.2 会引发错误。

于 2008-09-19T21:38:13.593 回答