【问题标题】:flask JavaScript simple ajax request烧瓶 JavaScript 简单的 ajax 请求
【发布时间】:2015-02-01 12:20:01
【问题描述】:

一切都在标题中,我有一个按钮,在他附近有一个在开始时写“默认”的文本。当有人点击按钮时,我想发送“您收到了吗?”使用 ajax JavaScript 请求结束 server.py 回答“是”。

我的 server.py:

#! /usr/bin/python            
# -*- coding:utf-8 -*-               

from flask import Flask, json, request, render_template
app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def get_data():
    if request.method == 'POST':
        data = json.loads(request.form.get('data'))
        ss = data['messageClient']
        return str(ss)
    return render_template('test.html')

if __name__ == '__main__':
    app.run(debug=True)

我的 test.html:

    <!DOCTYPE html>

<html>
    <head>
        <meta charset="utf-8" />
        <title>Test</title>
    </head>
    <body>
        <button id="UID_boutonTest" onclick="functionTest()" style='left:50px;height:50px;width:200px;'>boutonTest</button>
        <span id="UID_afficheTest" style='text-align: center;'>defaut</span>
        <script type="text/javascript">
          function functionTest()
          {
          alert("click bouton");
            $.ajax(
            {
              type : 'POST',
              url : "/",
              dataType:'json',
              data    : JSON.stringify( { "message" : "didyoureceive?" } ),
              success : function(data)
              {
                if (data !=null)
                {
                  messageServer=data;
                  $('#UID_afficheTest').val(messageServer);
                  document.getElementById('UID_afficheTest').innerHTML = messageServer;
                  alert("messageServer = "+messageServer);
                }
              }/*success : function() {}*/
            });/*$.ajax*/
          }
        </script>
    </body>
</html>

【问题讨论】:

  • 坦克为您提供帮助,您无法想象我遇到了多大的麻烦。所以没有错误,如果我点击按钮,就会出现第一个警报“点击按钮”,但 server.py 中没有任何内容,所以函数成功没有任何返回
  • 将 contentType: "application/json" 也放入您的 ajax 调用中。你能看到你的浏览器网络标签,请求是什么?
  • 再次感谢您的帮助(对不起我的英语,我是法语)我在我的 ajax 请求中添加了 contentType: "application/json"。但你是对的,如果我使用 firebug,我会去网络,当我点击按钮时没有请求。
  • 点击按钮时是否收到“点击按钮”提示?
  • yes 这部分有效,所以可能是我的 ajax 请求错误?

标签: ajax flask request


【解决方案1】:

好的,现在我的 ajax 请求有效,server.py 返回了良好的值(如果我用 firebug 检查我看到:问:“你收到了吗”并回答:“我收到了:你收到了吗”所以它可以工作,但是, 我的文字没有改变,我不明白为什么我的 javascript 警报没有出现(alert1 和 4 不起作用)

<!DOCTYPE html>

<html>
    <head>
      <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
      <script type="text/javascript">
          function functionTest()
          {
          alert("alert1:click bouton");
            $.ajax(
            {
              type : 'POST',
              url : "/lolo",
              contentType: "application/json;charset=UTF-8",
              dataType:'json',
              data    : JSON.stringify( { "messageClient" : "didyoureceive?" } ),
              success : function(data)
              {
                alert("alert2:messageServer = "+data);
                if (data !=null)
                {
                  alert("alert3:messageServer = "+data);
                  messageServer=data;
                  $('#UID_afficheTest').val(messageServer);
                  document.getElementById('UID_afficheTest').innerHTML = messageServer;

                }
              }/*success : function() {}*/
            });/*$.ajax*/
          alert("alert4:after ajax request");
          }
        </script>
      <meta charset="utf-8" />
      <title>Test</title>
    </head>
    <body>
        <button id="UID_boutonTest" onclick="functionTest()" style='left:50px;height:50px;width:200px;'>boutonTest</button>
        <span id="UID_afficheTest" style='text-align: center;'>defaut</span>

    </body>
</html>

和我的服务器:

#! /usr/bin/python                                                                        
# -*- coding:utf-8 -*-                                                                    

from flask import Flask, json, request, render_template
app = Flask(__name__)

@app.route("/lolo", methods=['GET', 'POST'])
def get_data():
    if request.method == 'POST':                                  
        data = json.loads(request.data)
        ss = data['messageClient']
        ss = "I received : " + ss
        return str(ss)
    return render_template('test.html')

if __name__ == '__main__':
    app.run(debug=True)

【讨论】:

  • ^^ 如果我指定了 dataType:'json',我就傻了,我必须返回:return jsonify(reponseServer=ss)
猜你喜欢
  • 1970-01-01
  • 2014-07-23
  • 2020-01-13
  • 1970-01-01
  • 2015-03-10
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多