JQuery“搞”失败(在后端使用Google App Engine)

时间:2009-08-14 02:12:47

标签: javascript jquery python google-app-engine

我想做的事情非常简单:但事情显然已经出现了问题。

在前端:

function eval() {
    var x = 'Unchanged X'
    $.get("/",  { entry: document.getElementById('entry').value },
          function(data){
            x = data;
          }
      );

       $("#result").html(x);
    }

在后端:

class MainHandler(webapp.RequestHandler):

  def get(self):
      path = os.path.join(os.path.dirname(__file__), 'index.html')
      if self.request.get('entry') != '':
          #self.response.out.write({'evalresult': self.request.get('entry')})
          self.response.out.write(request.get('entry'))
      else:
          self.response.out.write(template.render(path, {'result': 'Welcome!!'}))



   def main():
      application = webapp.WSGIApplication([('/', MainHandler)],
                                       debug=True)
      wsgiref.handlers.CGIHandler().run(application)

然而,显然函数永远不会被调用,而#result被设置为'Unchanged X'。我错过了什么?

注意:未调用回调。我已通过在回调函数中放置警报(“测试”)来验证这一点。任何人的想法?

3 个答案:

答案 0 :(得分:2)

$("#result").html(x);进入get()回调

答案 1 :(得分:2)

如果回调未运行,您可以尝试将$ .get更改为$ .ajax()调用,并添加错误回调,以查看服务器是否返回错误。

或者更好的是,检查firebug中的“net”面板,看看服务器的响应是什么,这可能有助于您追踪后端的问题。

一旦问题得到解决,您可能希望用简单的$()。load替换$ .get,它将获取数据并自动将其放入div中:

$('#result').load('/', { entry: document.getElementById('entry').value });

编辑:我认为以下将是一种更简洁的编写方式:

$('#result').load('/', { entry: $('#entry').val() });

答案 2 :(得分:1)

首先我们有一个愚蠢的错误:

<font size="3" face="Trebuchet MS">Speak Your Mind:&nbsp;&nbsp;</font><input type="text"     
size="60" id="entry"/> <img valign="bottom" src='/assets/cognifyup.png' 
onMouseOver="over()" onMouseOut="out()" onMouseDown="out(); evaluate();" 
onMouseUp="over()"><br><br>

over()out()之后需要分号(罗杰那个? ---抱歉无法抗拒

其次(更微妙的问题):

如果我们需要打算将get()转换为getJSON()调用,(您可能已经注意到这是我从返回字典的注释python代码中的原始意图),那么我们需要在str()周围打self.request.get('entry')次来电。因此,

self.response.out.write({'evalresult': self.request.get('entry')})

成为:

self.response.out.write({'evalresult': str(self.request.get('entry'))})

由于HTML字段中的字符串转换为Python中的unicode文本,在后端,我们显然需要将其转换为Python字符串(因为getJSON()显然不喜欢Python表示的unicode字符串 - 任何想法,为什么这是任何人的情况?)。

无论如何,原来的问题已经解决了。总结:任何带有Python unicode字符串的JSON对象将被接受为有效的JSON对象,并且将无声地失败 - 这是一个令人讨厌的问题,我可以看到任何人在服务器上使用带有Python的JQuery咬人 - 侧。