当前位置: 首页 > 面试题库 >

从html获取数据 并使用ajax或js将数据传递回前端

巫健柏
2023-03-14
问题内容

我正在尝试从网页获取数据到我的flask应用程序,并对其进行一些操作后,输出列表即试图将其作为下拉列表发送回前端。

到目前为止,我所做的是:

有一个用户表单,用户在其中输入详细信息并单击提交,然后获得json输出。

以这种形式,我有一个搜索按钮,当用户输入一个字符串时,该字符串将被发送到flask应用程序路由,并且只需执行很少的搜索操作并输出项目列表(直到这部分工作为止!)

我需要开始工作的是输出列表,应再次将其发送回表单页面,而我无法使其正常工作。

这是我到目前为止所做的:

    var successFunction = function(response) {
     /* do something here */
            $('#info').html(JSON.stringify(data, null, '   '));
    });
}
$(function(){
        $('#btnSignUp').click(function(){

                $.ajax({
                        url: '/signUp',
                        data: $('form').serialize(),
                        type: 'POST',
                        success: successfunction(response)
                        error: function(error){
                                console.log(error);
                        }
                });
        });
});

flask应用程序具有以下内容:

from flask import Flask, render_template, request,jsonify,url_for
import json,os,re
app = Flask(__name__)

@app.route('/',methods=['GET','POST'])
def form():
        if request.method == 'POST': #this block is only entered when the form is submitted
                result = { key: value[0] if len(value) == 1 else value
                      for key, value in request.form.iterlists()
                        }
                return json.dumps(result,indent=2)
        return render_template('form_backup1.html')


@app.route("/signUp", methods=["POST","GET"])
def signUp():
        jsdata = request.form['Nitro']
        <couple of find and search operations the output of which is in 
        this dropdown_list list>
        return jsonify(dropdown_list)

if __name__ == '__main__':
   app.run(host="0.0.0.0",port="5000",debug = True)

删除html页面只是为了显示搜索框:

      <div id='nitroo'>
      Nitro_search: <input type="text" placeholder="Apply Nitro" name="Nitro" id="Nitro">
      <button id="btnSignUp" class="btn btn-lg btn-primary btn-block" type="button">Search</button>
       <pre id="info"></pre>

就像我说的那样,当用户单击搜索时,我能够获得html表单中用户输入的文本。python的输出列表是我无法到达前端的地方。

任何帮助,将不胜感激。

谢谢


问题答案:

您可以将ajax与Jquery一起使用。您可以查看此文档以了解更多详细信息。

如何进行:

  1. 配置js脚本

在您的HTML文件模板中:

  • 加载jQuery

最好先加载Jquery,再加载其他javascript文件。

静态地:

<script type=text/javascript src="{{url_for('static', filename='jquery.js') }}"> </script>

或使用Google的AJAX库API:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="{{url_for('static', filename='jquery.js') }}">\x3C/script>')</script>
  • 向站点添加动态路径
    <script type=text/javascript>$SCRIPT_ROOT = {{ request.script_root|tojson|safe }}; </script>
    

此脚本标记将全局变量设置为应用程序根目录的前缀。

2. **在烧瓶的侧面**

编写一个函数,该函数将用户在表单中输入的值作为参数,执行搜索操作并返回带有要显示列表的JSON对象。

@app.route("/_signUp")
def signUp():
    myString = request.args.get('myString')

    """couple of find and search operations the output of which is in 
    this dropdown_list list"""

    dropdown_list = ['A', 'B', 'C'] #sample

    return jsonify(dropdown_list=dropdown_list)
  1. 返回HTML代码

编写一个脚本,该脚本将检索输入的数据,将其以Ajax格式发送到服务器,并显示服务器返回的信息。

<script type=text/javascript>
    $(function(){
        $('#btnSignUp').bind('click', function(){
            $.getJSON($SCRIPT_ROOT + '/_signUp', {
                myString: $('input[name="Nitro"]').val(),
            },function(data){
                $('#info').append('<li>' + data.dropdown_list[0] + '</li>' );//A
                $('#info').append('<li>' + data.dropdown_list[1] + '</li>' );//B
                $('#info').append('<li>' + data.dropdown_list[2] + '</li>' );//C
            }
        });
    });
</script>
<div id='nitroo'>
    Nitro_search: <input type="text" placeholder="Apply Nitro" name="Nitro" id="Nitro">
    <button id="btnSignUp" class="btn btn-lg btn-primary btn-block" type="button">Search</button>
   <pre id="info"></pre>
</div>

有关更多详细信息,请参见此链接。



 类似资料:
  • 问题内容: 我如何将数据从随后的php传递回ajax? PHP ajax 我的问题是如何在此处显示值?警报消息给我“未定义”? 问题答案: 您可以按照以下方式进行操作。 JS

  • 问题内容: 我有一个标准的javascript ajax调用,其中将data:设置为json数据。 我试图在php中获取数据,这是行不通的。 但是,可行。 我想知道这可能是我的框架或诸如此类的无法正常工作的东西吗?还是还有其他我可以用来获取数据的东西? 编辑: 因此,框架YII和扩展Restfullyii具有使用一种方法获取其数据的方法return json_decode(file_get_con

  • 问题内容: 我有一个由javascript函数填充的html表单。我还有另一个javascript函数,可获取所有表单元素的值,并且当前仅使用警报将其显示给用户。通过python使用以下代码显示html页面: 这一切都很好,但是我不想使用警报来显示数据,而是想将数据传递回python,但不知道如何。所有数据都存储在javascript数组中,因此我基本上只需要传递这一数据即可。 编辑:我不能使用任

  • 我正在使用Jython从Java运行python脚本。当我使用调用python脚本时,我可以将数据作为命令行参数发送到python脚本。

  • 问题内容: 我总是收到“错误”警报,但我无法弄清楚出了什么问题。我只是想取回我发送的字符串(“ testexpression”)。它必须与数据部分有关,因为没有参数就可以工作。 这是jQuery部分: 这是控制器: (更新:类型为post,我也尝试使用get进行测试,然后将其留在了里面) 问题答案: 您需要将数据作为字符串/ json发送。您正在发送一个javascript对象。另外,该URL可能

  • 我创建了一个新的电子应用程序。 在索引中。jsi使用节点文件系统加载数据 如果我试着使用require。JSIT之所以能够工作,是因为它运行在不同的线程上,而不是使用节点进行初始化,更像是一个实际的浏览器窗口。但有没有办法从索引中传递数据呢。js到main。js 我不知道我对这个问题的看法是否部分正确 如果您需要更多代码或信息,请询问!