ajax返回json 空,ajax返回空字符串而不是json[python cgi]

基本上,我有一个cgi脚本,可以打印出有效的json,我已经检查过了,我有一个类似的函数,它们的工作方式是一样的,但是这个函数没有什么原因,我找不到它。在

Javascript代码:function updateChat(){

$.ajax({

type: "get",

url: "cgi-bin/main.py",

data: {'ajax':'1', 'chat':'1'},

datatype:"html",

async: false,

success: function(response) {

alert(response); //Returns an empty string

},

error:function(xhr,err)

{

alert("Error connecting to server, please contact system administator.");

}

});

下面是python输出的JSON:

^{pr2}$

我用过json.dumps文件为了创建JSON,它在前面的函数中工作,这些函数具有几乎相同的JSON布局,只是内容不同。在

还有一大堆服务器代码,我试着把相关部分拷贝出来。基本上我只是为了学习目的过滤一个丑陋的聊天日志。我用regex过滤它,然后从中创建一个json。在#!/usr/bin/env python

# -*- coding: UTF-8 -*-

print "Content-type: text/html\n\n"

print

import cgi, sys, cgitb, datetime, re, time, random, json

cgitb.enable()

formdata = cgi.FieldStorage()

def tail( f, window=20 ):

BUFSIZ = 1024

f.seek(0, 2)

bytes = f.tell()

size = window

block = -1

data = []

while size > 0 and bytes > 0:

if (bytes - BUFSIZ > 0):

# Seek back one whole BUFSIZ

f.seek(block*BUFSIZ, 2)

# read BUFFER

data.append(f.read(BUFSIZ))

else:

# file too small, start from begining

f.seek(0,0)

# only read what was not read

data.append(f.read(bytes))

linesFound = data[-1].count('\n')

size -= linesFound

bytes -= BUFSIZ

block -= 1

return '\n'.join(''.join(data).splitlines()[-window:])

def updateChatBox():

try:

f = open('test.txt', 'r')

lines = tail(f, window = 20)

chat_array = lines.split("\n")

f.close()

except:

print "Failed to access data"

sys.exit(4)

i = 0

while i < len(chat_array):

#remove timer

time = re.search("(\[).*(\])", chat_array[i])

result_time = time.group()

chat_array[i] = chat_array[i].replace(result_time, "")

#Removes braces around user

user = re.search("(\\().*?(_)", chat_array[i])

result_user = user.group()

chat_array[i] = chat_array[i].replace("(", "")

chat_array[i] = chat_array[i].replace(")", "")

#Removes underscore and message end marker

message = re.search("(_).*?(\|)", chat_array[i])

result_message = message.group()

chat_array[i] = chat_array[i].replace("_", ":")

chat_array[i] = chat_array[i].replace("|", "")

data += chat_array[i] + "\n"

i = i + 1

data_array = data.split("\n")

json_string = json.dumps(data_array)

print json_string

if formdata.has_key("ajax"):

ajax = formdata["ajax"].value

if ajax == "1": #ajax happens

if formdata.has_key("chat"):

chat = formdata["chat"].value

if chat == 1:

updateChatBox()

else:

print "ERROR"

elif formdata.has_key("get_all_stats"):

get_all_stats = formdata["get_all_stats"].value

if get_all_stats == "1":

getTopScores()

else:

print "ERROR"

这里还有一个可以完美工作的函数,它位于同一个python文件中def getTopScores():

try:

f = open('test_stats.txt', 'r')

stats = f.read()

stats_list = stats.split("\n")

f.close()

except:

print "Failed reading file"

sys.exit(4)

json_string = json.dumps(stats_list)

print json_string

唯一的区别是使用tail函数和regex,最终结果JSON看起来实际上是相同的。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值