2014-02-27 24 views
0

我有一个Web应用程序,我希望将文本框的值传递给烧瓶应用程序。但是,当我在烧瓶中打印请求对象时,我没有收到数据。可以帮忙我out.Here是代码:将HTML数据传入Flask

瓶服务器:

@app.route('/send_data', methods=['GET', 'POST']) 

def send_data(): 
    print request 
    if request.method == "POST": 
     #Operations with the data received 
    else: 
    return jsonify(txt="Nothing received"); 

HTML代码:

<div id="div_submit"> 
<form name="form_submit"> 
    <textarea cols="100" rows="1" id="txt_query"> 

    </textarea> 
    <br> 
    <br/> 
    <input type="submit" value="Submit" onclick="send_query()"> 
</form> 
</div> 

的Javascript:

function send_query() 
    { 
     var qry=document.getElementById("txt_query").value; 
     //alert(qry); 
     var contentType = "application/x-www-form-urlencoded"; 
     var ajax=$.ajax({ 
      type: "POST", 
      url: "http://0.0.0.0:8080/send_data", 
      data: JSON.stringify(qry), 
      dataType: "json" 

     }).done(function(data){ 
       alert("success"); 
      }); 
      ajax.fail(function(data){ 
       alert("fail"); 
      }); 


    } 
+0

有人能好心帮助我??? – user2284140

回答

1

您张贴JSON数据;内容类型设置为application/json并使用request.get_json() method加载数据:

var ajax=$.ajax({ 
    type: "POST", 
    url: "http://127.0.0.1:8080/send_data", 
    data: JSON.stringify({query: qry}), 
    dataType: "json", 
    contentType: "application/json; charset=UTF-8" 
}) 

其中的URL必须是有意义的; 0.0.0.0对于服务器来说是可以的(它意味着'绑定到所有接口'),但是你可能在本地主机上运行这个,所以首先使用它。

您认为使用:

data = request.get_json() 
query = data['query'] 
+0

在ajax调用中,我将该方法指定为POST。当我使用request.method打印出Flask服务器中的方法名称..我将它作为POST.And request.method ==“POST”为true.Its进入if语句中。一切正在工作..只是如果我做request.data我什么都没有得到。 – user2284140

+0

@ user2284140:对不起,我确实错过了。你想发布JSON,所以使用'requests.get_json()'并正确设置内容类型。 –

+0

如果我做了你所说的改变。我从服务器收到以下消息: 127.0.0.1 - - [27/Feb/2014 16:32:00]“OPTIONS/send_data HTTP/1.1”500 因此,它的HTTP 500消息而不是200.而当我做data = request.get_json(),它给了我一个NoneType对象。此方法已从POST转移到选项 – user2284140

相关问题