2010-02-15 30 views
0

我有3个AJAX函数可以在我的网站上的Django应用程序和浏览器中的一些使用YUI的JavaScript之间移动数据。他们之间在结构,概念,代码等方面没有很大的区别。其中2个工作正常,但在第三个中,我收到了一个虚假的HTTP请求。其POST数据包含预期请求的POST数据的子集。请求元数据除CONTENT_LENGTH(显然)和CONTENT_TYPE是'text/plain;字符集= UTF-8'为意图和'application/x-www-form-urlencoded'为不需要的请求。我没有明确地设置内容类型,似乎表明这两个请求不具有相同的来源,而第二个请求只是简单地弹出。Django:如何追踪虚假的HTTP请求?

预期的请求集HTTP_CACHE_CONTROL':‘无缓存’和‘HTTP_PRAGMA’:‘无缓存’,杂散一个没有。这两个请求的dev服务器日志输出是

[15/Feb/2010 15:00:12] "POST /settings/ HTTP/1.1" 200 0 

最后的0表示什么意思?找不到任何文件。这个值通常是非零的......在Apache中,它是服务器响应的总大小(以字节为单位),有人可以证实它与Django相同吗?

我的问题显然是找出这个额外的请求来自哪里。

我相当熟悉的JS调试使用Firebug我觉得我擅长Python和Django的,但我不知道了很多关于HTTP请求和响应的内部。我可以断点并逐步通过发送预期的XMLHTTP请求的JS代码,但该断点不会再次受到攻击。

既FF3和Safari出现的问题,我在雪豹,所以我不能用IE或Chrome测试。 我看过Django调试技术和工具,如http://robhudson.github.com/django-debug-toolbar/,但我想我已经有了他们可以给我的信息。

有人可以建议一个策略或工具来缩小问题的范围吗?

+0

的0在最后看到的是HTTP响应,IIRC的大小。你有Firebug或类似的调试器/检查器启用?这可能是由于双方都在做这件事。 另外,是否有一个回调附加到您的AJAX请求,正在触发和POSTing一次主要通话完成后? –

+0

我确实安装了Firebug,并且我正在使用它来分析网络选项卡中的HTTP请求,但是我发现Safari的错误... 关于回调,我必须再次锁定代码(don现在没有它),但是必须有代码发送xhr,并且xhr.send(...)上的断点没有任何一个被触发... 到目前为止,它看起来确实看起来像请求从无处。 – ssc

+0

再次检查了代码,这三个Ajax请求都有回调,但没有一个会触发另一个请求。 另外,我注意到在Firebug网络标签中,我只能看到虚假请求,而不是预期的请求。虽然可能是一个Firebug错误。 – ssc

回答

1

有问题的AJAX函数提交表单数据,但两个工作没有。表单在提交表单时会有一个默认的动作:发送带有表单数据的请求。我未能阻止此默认操作。

所以杂散要求确实走出了浏览器的黑暗丛林,还有我的js文件没有代码,并将其发送。

解决方案:

YAHOO.util.Event.preventDefault(event); 

在窗体的开始提交事件处理程序。

http://developer.yahoo.com/yui/examples/event/eventsimple.html