2014-06-24 65 views
0

我正在使用Python API来处理对MongoDB的REST调用。该API基于Kule(因此包括Bottle和PyMongo模块)。前端使用node.js构建。我一直在使用API​​,前端和MongoDB在不同端口上开发和测试本地主机。node.js中的POST失败

我已经设置了API并一直试图让CRUD请求正常工作。我可以从Python脚本以及运行在Apache服务器上的Javascript中获得这些工作。但是,当我将相同的代码添加到前端时,GET工作,但POST失败,出现500错误。

此POST代码工作在Apache服务器上:

var myrequest=new XMLHttpRequest(); 
myrequest.onreadystatechange=function(){ 
    if (myrequest.readyState==4){ 
    if (myrequest.status==201){ 
     alert(myrequest.responseText); 
    } else{ 
     alert("An error has occured making the request"); 
    } 
    } 
} 
myrequest.open("POST", "http://localhost:8080/items", true); 
myrequest.setRequestHeader("Content-type", "application/json;charset=UTF-8"); 
myrequest.send(JSON.stringify({'name' : 'Name', 'description' : 'Description'})); 

当我添加这前端,我从库勒得到以下回溯:

Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\bottle.py", line 764, in _handle 
    return route.call(**args) 
    File "C:\Python27\lib\site-packages\bottle.py", line 1625, in wrapper 
    rv = callback(*a, **ka) 
    File "C:\Python27\lib\site-packages\bottle.py", line 1575, in wrapper 
    rv = callback(*a, **ka) 
    File "C:\Python27\lib\site-packages\kule\kule.py", line 64, in post_list 
    inserted = collection.insert(request.json) 
    File "C:\Python27\lib\site-packages\pymongo\collection.py", line 351, in insert 
    docs = [self.__database._fix_incoming(doc, self) for doc in docs] 
TypeError: 'NoneType' object is not iterable 
127.0.0.1 - - [24/Jun/2014 07:53:40] "POST /scenarios HTTP/1.1" 500 50 

所以,我是什么做错了?为什么Javascript会在node.js中断?我有GET工作,但POST失败。为什么?

谢谢!

回答

0

我发现我的错误。

myrequest.setRequestHeader("Content-type", "application/json;charset=UTF-8"); 

“内容类型”应该是带有“T”的“内容类型”。

愚蠢的错误。留给别人看。