3

我试图弄清楚如何将 jQuery AJAX 与 Python 的 Bottle 模块一起使用。

这是我最初的尝试,但它不起作用,我真的碰壁了(整天都在编程,我的大脑有点炸了):

    from bottle import route, request, run, get

@route('/form')
def construct_form():
    return '''

<!DOCTYPE html>
<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $('form').submit(function(e) {
                $.ajax({
                    type: 'POST',
                    url: '/ajax',
                    data: $(this).serialize(),
                    success: function(response) {
                        $('#ajaxP').html(response);
                    }
                });
                e.preventDefault();
            });
        });
    </script>
</head>
<body>
    <form method="POST" action="/ajax">
        <input id="ajaxTextbox" name="text" type"text" />
        <input id="ajaxButton" type="button" value="Submit" />
    </form>
    <p id="ajaxP">Nothing to see here.</p>
</body>
</html>

    '''

@route('/ajax', method='POST')
def ajaxtest():
    theText = request.forms.text
    if theText:
        return theText
    return "You didn't type anything."

run(host = 'localhost', port = '8080')

基本上,我想要做的是在文本框中输入文本,单击按钮,然后将“ajaxP”的 innerHTML 更改为输入的文本。

没有错误,当我按下按钮时它什么也没做。

有什么帮助吗?


已解决:表单按钮的类型必须是“提交”,而不是“按钮”。掌心。

4

2 回答 2

2

$("#ajaxP").load("/ajax", ...向响应 HTML发送GET(不是POST)请求/ajax并将内容替换为。#ajaxP

您可以通过在 Python 代码中更改method='POST'为来解决您的问题。method='GET'

或者您可以通过阻止表单提交并发送 AJAX 请求来修复您的 JS:

$(document).ready(function() {
    $('form').submit(function(e) {
        $.ajax({
            type: 'POST',
            url: '/ajax',
            data: $(this).serialize(),
            success: function(response) {
                $('#ajaxP').html(response);
            }
        });

        e.preventDefault();
    });
});​
于 2012-10-27T08:31:07.243 回答
0

请将表单按钮的类型修改为type= "submit"and not "button"

于 2017-11-01T13:19:18.147 回答