1

我在谷歌和stackoverflow上搜索过,可以找到一个很好的答案。

我的 HTML 页面上有获取 python 的 HTML 输出的代码(我正在使用 jquery):

$.ajax({
    type: "POST",
    url: "getHTML.py",
    success: function(response)
    {
        $('body').append(response);
    }
});

python文件看起来像这样:

baseHTML = "www.google.com"
user_agent = "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"
headers = {"User-Agent": user_agent}
req = urllib2.Request(baseHTML, headers=headers)

forumHTML = urllib2.urlopen(req)

page = Soup(forumHTML)

for e in page.findAll('script'):
    e.extract()

print 'Content-Type: text/plain\r'
print '\r'
print page

一切正常,我很高兴,但是......现在我尝试添加另一个由按钮单击事件发送的 JSON:

$('#GetByURL_button').on("click", function(){
    $.ajax({
        url: "getHTML.py",
        type: "POST",
        data: JSON.stringify({"newURL": "www.stackoverflow.com"),
        dataType: "json",
        success: function(response) {
            alert(response);
        }
    });
});

现在我只是不知道如何在 python 中处理该事件。

所以为了清楚起见 - 我希望 python 有类似的东西:

  1. 如果用户没有要求任何东西(通过 JSON)加载默认页面,
  2. 如果用户要求“stackoverflow”(通过 JSON)加载 www.stackoverflow.com
  3. 如果用户要求“狗”加载 www.DogsAreCool.com。

tnx 的帮助:)

4

2 回答 2

3

您没有指定用于连接 Python 脚本的框架或机制,并且您的示例根本没有显示脚本处理输入。

因此,让我们假设您正在使用一种机制,该机制为您提供请求正文stdin,就像老式 CGI 一样。你会做这样的事情:

content = sys.stdin.read()
data = json.loads(content)
newURL = data.get('newURL')
if newURL == 'dog':
    newURL = 'http://www.DogsAreCool.com'
elif not newURL:
    newURL = defaultPageURL
response = urllib2.urlopen(newURL)
# ...
于 2013-07-15T21:18:57.093 回答
2

两种方法:

  • 您的服务器通过正常的 http 响应(200 OK)发回正确的 URL
  • 你的 ajax 代码集window.location
  • 您的浏览器很乐意重定向

第二个:

于 2013-07-15T21:33:43.573 回答