我正在尝试从jquery脚本运行一个简单的后端python方法。
JQUERY
$(document).ready(function(){
$('#btn').click(function(event){
event.preventDefault();
var commit = $("#test_form input[type='radio']:checked").val();
alert(commit);
$.ajax({
type: "POST",
url: "submitted",
data: commit,
success: function(data) {
alert(data["title"]);
$("#status").html(data["title"]);
}
});
return false;
});
$('#update_help').click(function() {
$('#update_info').toggle('slow', function() {
// Animation complete.
});
});
});
在我的樱桃python脚本中,我有以下
@cherrypy.expose
def submitted(self, commit = 0):
cherrypy.response.headers['Content-Type'] = 'application/json'
print"Got here"
#return simplejson.dumps(dict(title="hello", success=True))
return "foo"
HTML文件如下所示
<form id="test_form" method="post">
<li class = "option">
<input type="radio" name="commit" value = "0"/> Option 1
</li>
<li>
Option 1
</li>
<li class = "option">
<input type="radio" name="commit" value = "1"/> Option 2 <br>
</li>
<li class = "option">
<input id="btn" type="submit"/>
</li>
</ul>
</form>
我注意到ajax帖子从未真正找到“提交”功能。整个页面重新加载,并且没有任何东西返回到ajax post回调。我确信这与我在调度错误方面有关,但我错过了什么?
由于
答案 0 :(得分:0)
尝试将您的javascript更新为此...
$.ajax({
type: "POST",
url: "/plugins/set_prop/submitted",
data: commit,
success: function(data) {
alert(data["title"]);
$("#status").html(data["title"]);
}
希望这会有所帮助。 安德鲁
答案 1 :(得分:0)
当您仅使用submitted
作为目标链接时,它将与打开的html文件相关。这意味着当您的html文件位于/plugins/set_prop/
时,它应该是正确的。
但是关于您提交的处理程序的表示法: 你没有这个“真正的”json。 尝试将您的代码更改为:
@cherrypy.expose
@cherrypy.tools.json_out()
def submitted(self, commit = 0):
print("Got here")
return {"title": "hello", "success": True}
编辑: 您似乎只在DATA设置为True或False时发出POST请求。所以cherrypy不明白你想要给哪个参数。尝试将代码更改为:
$.ajax({
type: "POST",
url: "submitted",
data: {commit: commit},
success: function(data) {
alert(data["title"]);
$("#status").html(data["title"]);
}
});