为什么Ajax脚本不能在本地工作?

时间:2008-09-19 21:27:05

标签: javascript ajax webserver

我遇到的问题是在我的网站上运行正常但在本地开发服务器上运行不正常的代码。

我有一个更新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专业版上)

是否有某些更新或某些我缺少的东西?

2 个答案:

答案 0 :(得分:1)

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

哦,检查你的编码程序。对于查询字符串和POST表单数据,规则相当相同。

答案 1 :(得分:0)

我猜想Shog9是正确的,IIS 6我足够聪明,可以忽略你的请求并发送正确的标题,而5.2会抛出错误。