Я пишу следующий HTML-кодGetting 400 плохой запрос
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="/static/css/grafana_style_sheet.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"> </script>
<script type="text/javascript">
$(document).ready(function(){
$("#Click").click(function(){
alert('hi '+ $('#databases').val());
var data1 = new Object();
data1.name = $('#databases').val();
data1.dbname = 'grafana';
alert(data1.dbname + " " + data1.name);
$.ajax({
url : "dashboards",
type : 'POST',
data : 'data1',
dataType : "text",
success : function(){
data = JSON.parse(data);
console.log("hi " + data);
}
});
});
});
</script>
</head>
<body>
<div id="header">Report Suites</div>
<form>
<fieldset id = "fieldset">
<legend align = "center"><font color= "#00008B"><strong>Select your Report Suite<strong></font></legend>
<select id ="databases" name = "db">
<option value = "">--Select From following--</option>
<option value = "HARMONY">HARMONY</opton>
<option value = "CAMPS">CAMPS</opton>
<option value = "QBSU">QBSU</opton>
<option value = "SIMBA">SIMBA</opton>
</select>
<br><br>
<button type = "button" id = "Click"> Click Me!!</button>
</fieldset>
</form>
<div id ="placeholder"></div>
</body>
</html>
Для запуска выше HTML-код, я написал следующую программу Python, используя флягу так, чтобы отправить данные из формы (выше) и запустить запрос на основе этого.
from flask import Flask, render_template, json, request
from flask import Flask, request, abort, jsonify
from flaskext.mysql import MySQL
import MySQLdb
app = Flask(__name__)
def connection(database):
db = MySQLdb.connect("localhost","root","",database)
cursor = db.cursor()
return cursor
@app.route("/")
def main():
return render_template('grafana_try1.html')
@app.route("/dashboards",methods=['POST'])
def connect():
dtb = request.form['dbname']
b = request.form['name']
conn = connection(dtb)
conn.execute("SELECT * FROM SuiteDetails WHERE RS_name=%s",b)
results = conn.fetchall()
json_return_value =[]
for result in results:
table_data = {'RS_name' : result[0], 'RS_id' : result[1], 'Staging_db' : result[2], 'Trans_db' : result[3], 'Base_Date' : result[4], 'graph_link' : result[5]}
json_return_value.append(table_data)
print json.dumps(json_return_value)
return json.dumps(json_return_value)
if __name__ == "__main__":
app.run(debug = True)
Когда я запускаю его на firefox, я получаю ответ от 400 BAD REQUEST.
Пожалуйста, скажите мне, что я делаю неправильно.
Вы можете проверить запрос, сделанный в разделе «сеть» вашего браузера dev tools? – jlnabais
Я запускаю его на firefox и используя firebug. Он дал некоторые заголовки запроса следующим образом: Принять \t текст/plain, */*; д = 0,01 Accept-Encoding \t GZIP, выкачать Accept-Language \t EN-US, еп, д = 0,5 Cache-Control \t нет кэша соединения \t поддержания активности Content-Length \t Content-Type \t application/x-www-form-urlencoded; кодировка = UTF-8 Хост \t 127.0.0.1:5000 Pragma \t нет кэша Referer \t http://127.0.0.1:5000/ User-Agent \t Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv: 38.0) Gecko/20100101 Firefox/38.0 X-Requested-With \t XMLHttpRequest – sk215
Это вы хотели – sk215