Ajax Reload Button

时间:2014-10-05 16:39:45

标签: python html ajax

我试图在一个带有Ajax的网页上的div中添加一个简单的python脚本(这里我已经使用了一个随机的双字生成器工作正常),并在下面有一个按钮重新加载它。该页面成功加载了脚本... 然而 ,我还没有完全了解缺失的部分,再次调用脚本重新加载随机的两个单词由python脚本制作(我理解为什么下面的代码是错误的,但我不能弄清楚如何使它正确!)。指针非常感谢!

(NB是的我正在使用Python 2.4,因为我的网站主机还没有升级 - 他们很快就会出现!是的,我看到了this的问题,但它对我不起作用...... )

HTML:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8">
    <title>Find a sentence</title>
    <script src="http://code.jquery.com/jquery-2.0.3.js"></script>
    <script>
        $(function()
        {
            $.ajax({
                url: "cgi-bin/test.py",
                type: "GET",
                data: {foo: 'bar', bar: 'foo'},
                success: function(response){
                        $("#div").html(response);
                    }
           });
        });
    </script>
</head>
<body>
    <div id="div"></div>

<form name="input" action="cgi-bin/test.py" method="get">
<input type="submit" value="Regenerate!">
</form>

</body>

PYTHON:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# enable debugging
import cgitb
cgitb.enable()

import linecache
from random import randrange

print "Content-Type: text/html"
print

# file length counter

def file_len(fname):
    f = open(fname)
    try:
        for i, l in enumerate(f):
            pass
    finally:
        f.close()
    return i + 1

# range sizes

one_size = file_len('text/one.csv')
two_size = file_len('text/two.csv')

# random lines

one_line = randrange(one_size) + 1
two_line = randrange(two_size) + 1

# outputs

one_out = linecache.getline('text/one.csv', one_line)
two_out = linecache.getline('text/two.csv', two_line)

# output

sentence = one_out.strip('\n') + " " + two_out.strip('\n') + " "
print sentence

1 个答案:

答案 0 :(得分:1)

好吧,我认为必须点击&#34; Regenerate&#34;要重新加载的表单按钮。我的想法是将ajax逻辑放在一个单独的函数中。我不认为你需要那里的表格,因为你的重新加载电话现在是ajax电话。

<head>
<script>
    function reload() {
        $.ajax({
            url: "cgi-bin/test.py",
            type: "GET",
            data: {foo: 'bar', bar: 'foo'},
            dataType : "html",
            success: function(response){
                    $("#div").html(response);
                }
       });
    }

    $(window).load(function() {
        reload();
        $("#reload_button").click(function() {
            reload();
        });
    });
</script>
</head>

<body>
    <div id="div"></div>
    <input type="button" id="reload_button" value="Regenerate!">
</body>