gpt4 book ai didi

jquery - 如何在 CherryPy 中接收 AJAX 数据

转载 作者:行者123 更新时间:2023-12-01 04:24:33 25 4
gpt4 key购买 nike

开始攀登 ajax 学习曲线,我尝试对我的 CherryPy 应用程序进行简单的 ajax 回调,并将数据发送回浏览器。

我的 ajax 调用正在运行,我可以将请求方法返回给浏览器。

但是,我无法在 CherryPy 处理程序内的请求对象中找到浏览器发送的数据。这是我的 CherryPy 处理程序,抄袭自 this question :

class Contact:

def index(self):

cl = cherrypy.request.headers['Content-Length']
rawbody = cherrypy.request.body.read(int(cl))
body = None
#body = simplejson.loads(rawbody)
if body is None:
return cherrypy.request.method + ' (no body found)'
else:
return cherrypy.request.method + ' ' + body


index.exposed = True

这是我的 JavaScript:

<script type="text/javascript">
function SendContactEntry() {
$.ajax( {type: "POST",
url: "/contact/",
data: { word: "HELLO" },
processData: false,
cache: false,
contentType: "application/json",
dataType: "text",
success: function (response){
alert(response);
}
}
);
}
</script>

使用此代码,我的浏览器收到“POST(未找到正文)”响应。

我想做的是在我的 CherryPy 处理程序中了解到我收到了 word “HELLO”的值。

如果我取消注释行 body = simplejson.loads(rawbody)我收到 CherryPy 发回的 HTML 状态 500。如果我尝试用 @cherrypy.tools.json_in() 装饰我的 index() 函数,也会发生同样的情况.

最佳答案

由于您已将 processData 设置为 false 并且您正在传递一个对象,因此您正在通过数据对象的字符串化版本发送 - 并且没有任何内容可看。

或者:

  1. 在发送数据对象之前调用 JSON.stringify(这应该会使您的 simplejson.loads 调用起作用)。
  2. 删除 processData 属性,让 jQuery 将请求作为正常的 URL 编码请求发送(您可以通过 request.params["word"] 访问您的变量).

关于jquery - 如何在 CherryPy 中接收 AJAX 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7577831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com