我在这个愚蠢的错误上花了好几个小时,所以任何帮助都将不胜感激!在
我使用Jquery从googleappengine上托管的python文件请求xml。然后我尝试处理xml。在
以下是从firebug获得的post请求的响应:
<?xml version="1.0" encoding="ISO-8859-1"?><building key='agdhcHRydXNochALEglCdWlsZGluZ3MY3x4M' bldname='test'></building>
Status: 200 OK
Cache-Control: no-cache
Content-Type: application/xml
Content-Length: 0
下面是处理数据的javascript:
^{pr2}$以下是我从firebug得到的错误:
data.getElementsByTagName is not a function
anonymous("<?xml version="1.0" encoding="ISO-8859-1"?><building key='agdhcHRydXNochALEglCdWlsZGluZ3MY4B4M' bldname='test'></building>\nStatus: 200 OK\r\nCache-Control: no-cache\r\nContent-Type: application/xml\r\nContent-Length: 0\r\n\r\n")viewBuilding.js (line 120)
I()jquery.min.js (line 19)
anonymous(6)jquery.min.js (line 19)
[Break on this error] alert(data.getElementsByTagName("building"));\n
我在网站的各个部分都使用了javascript来处理xml,所以我的直觉告诉我javascript是正确的,也许数据的格式是错误的?我卡住了。:/
谢谢!在
来自GAE服务器的响应错误。它在XML数据的下面有头,作为响应主体的一部分。这将不是一个有效的XML文档;如果头不在顶部正确显示,就没有活动的Content-Type头来告诉jQuery传入的文档是XML。因此,它向您发送纯文本数据响应,而不是您想要的XML文档。出现错误是因为您不能对
String
调用getElementsByTagName
。在可能GAE应用程序的作者已经忘记了如何编写WSGI应用程序,而只是将XML文档输出到标准输出:
而不是将其正确返回到服务器进行处理:
^{pr2}$这就解释了为什么服务器认为
Content-Length
是0。在好吧,是时候检查一下清单了。在
我将假设数据被正确分配,并且您已经验证它包含您的“数据”。现在,由于它给出了一个错误:函数不存在,我们就知道它确实由于某种原因没有被找到,因为否则函数将返回一个空节点,如果它没有找到该名称的标记。在
我很好奇XML是否与javascript在同一个文件中,因为在这种情况下,您不需要指定文档,而不是数据吗?我知道我所说的场景是我在初始测试中要做的,所以我只想确定一下。在
如果使用数据引用外部XML,那么实际上应该没有问题。在
实际上,这一切似乎都是围绕着可变数据旋转的。在我看来,由于某些原因,数据要么没有引用正确的元素,要么没有引用任何内容。在
希望这有帮助, 大卫。在
使用
顺便说一句,我觉得可疑的是
Content-Length: 0
头。在根据您的评论,我断定生成xml的页面是假的。它首先输出xml,然后输出一些http头作为数据。这当然不是有效的xml。因此jQuery正确地确定返回的数据是文本格式。在
在输出一行xml之前,必须输出所有标题。在
相关问题 更多 >
编程相关推荐