如何将数据从JavaScript发送到Python
我在jinja2和python2.7上使用GAE进行web开发 我可以从Python中获取数据。但我未能将数据从JavaScript发送到Python。以下是JavaScript代码:如何将数据从JavaScript发送到Python,javascript,python,google-app-engine,Javascript,Python,Google App Engine,我在jinja2和python2.7上使用GAE进行web开发 我可以从Python中获取数据。但我未能将数据从JavaScript发送到Python。以下是JavaScript代码: function toSave() { var val_no = $('#field-no').val(); var val_name = $('#field-name').val(); var val_address = $('#field-address').val(); va
function toSave() {
var val_no = $('#field-no').val();
var val_name = $('#field-name').val();
var val_address = $('#field-address').val();
var val_phone = $('#field-phone').val();
var val_car = $('#field-car').val();
var val_penalty = $('#field-penalty').val();
$.ajax({
type: 'GET',
url: "https:/test/User_update",
data: {
"no": val_no,
"name": val_name,
"address": val_address,
"phone": val_phone,
"car": val_car,
"penalty": val_penalty
},
dataType: "json"
}).done(function () {
$('#modal-1').modal('hide');
table.row.data([val_no, val_name, val_address, val_phone, val_car, val_penalty, UserIndex_CreateEditButton(val_no, val_name, val_address, val_phone, val_car, val_penalty), UserIndex_CreateDeleteButton(val_no)], $('#' + tempUpdate));
});
}
Python代码(main.py中的类User_update):
如何从Python获取JavaScript数据?看起来您试图使用错误的方法发布数据。您应该使用POST而不是GET向服务器发送数据
$.ajax({
type: 'POST',
url: "https://firststep-2016.appspot.com/User_update",
data: {
"no": val_no,
"name": val_name,
"address": val_address,
"phone": val_phone,
"car": val_car,
"penalty": val_penalty
},
dataType: "json"
}).done(function () {
$('#modal-1').modal('hide');
table.row.data([val_no, val_name, val_address, val_phone, val_car, val_penalty, UserIndex_CreateEditButton(val_no, val_name, val_address, val_phone, val_car, val_penalty), UserIndex_CreateDeleteButton(val_no)], $('#' + tempUpdate));
});
然后在Python服务器中处理传入的数据
def post(self):
....
HTTP方法
首先,很好地理解了通信一般是如何工作的
HTTP有多种方法,如GET和POST(请参阅)
在这种情况下,适用于您的相关方法:
- GET用于只读请求。与其他HTTP方法不同,GET请求不包含发送到服务器的数据。所有数据都将通过URL参数发送。在某些情况下,也作为标题的一部分。GET请求可以重复或缓存,因为它们是只读的。这就是为什么它们不应该用于更新
- POST和PUT可以更新数据,通常POST用于创建对象,而PUT用于更新现有对象。这两种HTTP方法都接受包含数据的正文
$.ajax
:
作为数据
属性的文档:
要发送到服务器的数据。如果尚未转换为字符串,则会将其转换为查询字符串。它被附加到GET请求的url
因此,即使GET不接受正文,jQuery也会为您将其添加到URL中。如前所述,我建议不要使用GET进行更新
此时,您可以使用浏览器的开发人员工具来检查网络请求。这样,您将看到发送到服务器的确切内容
在服务器中接收数据
我相信您使用的API是:
您应该能够像这样获得单个值(不会有“数据”参数):
对于PUT或POST来说,它应该是这样工作的():
安全
您的服务器代码易受攻击
这不是你问题的一部分,但相当严肃。我不会在公共服务器上提供该代码,如果现在是,我会将其删除,直到修复。
https://firststep-2016.appspot.com/User_update
link给出了500个内部服务器错误,看起来您的python codeDuplicate重定向有问题:我认为jsonData=json.loads(self.get('data'))
应更改为jsonData=json.loads(self.request.get('data'))
我们希望得到比我的代码不起作用更多的信息,请参阅了解如何在stackoverflowAnuj上提问:我已经尝试过了。
def post(self):
....
val_no = self.request.get("no")
val_name = self.request.get("name")
# ...
val_no = self.request.POST['no']
val_name = self.request.POST['name']
# ...