Jquery 樱桃派工

Jquery 樱桃派工,jquery,python,cherrypy,Jquery,Python,Cherrypy,我试图从jquery脚本运行一个简单的后端python方法 JQUERY $(document).ready(function(){ $('#btn').click(function(event){ event.preventDefault(); var commit = $("#test_form input[type='radio']:checked").val(); alert(commit); $.ajax({

我试图从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.
        });
    });
});
在我的cherrypy 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"
<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>
HTML文件如下所示

@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"
<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>

  • 选择1
  • 选择1
  • 选项2
  • 我注意到的是,ajax帖子从未真正找到“submitted”函数。整个页面将重新加载,并且不会向ajax post回调返回任何内容。我确信这与我在调度上做了一些错事有关,但我错过了什么


    谢谢

    尝试将您的javascript更新到此

          $.ajax({
                type: "POST",
                url: "/plugins/set_prop/submitted",
                data: commit,
                success: function(data) {
                    alert(data["title"]);
                    $("#status").html(data["title"]);
                }
    
    希望这有帮助。
    Andrew

    当您使用just
    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}
    
    $.ajax({
        type: "POST",
        url: "submitted",
        data: {commit: commit},
        success: function(data) {
            alert(data["title"]);
            $("#status").html(data["title"]);
        }
    });
    
    编辑: 您似乎只是在数据设置为True或False的情况下发出POST请求。所以cherrypy不知道你想给出哪个参数。尝试将代码更改为:

    @cherrypy.expose
    @cherrypy.tools.json_out()
    def submitted(self, commit = 0):
        print("Got here")
        return {"title": "hello", "success": True}
    
    $.ajax({
        type: "POST",
        url: "submitted",
        data: {commit: commit},
        success: function(data) {
            alert(data["title"]);
            $("#status").html(data["title"]);
        }
    });
    

    (另请参见:)

    提交的处理程序在哪个类中?也许这一行应该包括class-url:“/class/submitted”,这实际上将url解析为,但在Chrome Inspector中我看到一个404 not found错误。SetProp就是这个类。它的索引方法工作得很好。当你转到localhost:9001/plugins/set_prop/submitted或你的ajax请求to/submitted时,你会在Chrome中看到404。在不知道JS工作的页面的URL的情况下,我会将URL更改为绝对URL(即/submitted),否则它将被视为相对于当前页面的路径。嗯。