【发布时间】:2026-01-16 09:55:02
【问题描述】:
所以我一直在搜索互联网,但找不到任何适合我的东西。我有一个简单的 html 表单,需要通过 JSON 发送到应用引擎数据存储区。
HTML 表单:
<form method="get" name="vehicle-form" id="vehicle-form">
<input type="text" name="type" placeholder="Vehicle Type" requried>
<input type="text" name="make" placeholder="Make" requried>
<input type="text" name="model" placeholder="Model" requried>
<input type="text" name="year" placeholder="Year" requried>
<button id="submit-btn">Add</button>
</form>
Javascript:编辑: 改变了这个 - 现在所有的值都为 null
var formData = {};
$("#part-form").serializeArray().map(function (x) { formData[x.name] = x.value; });
//var par = document.getElementById("test2");
//par.innerHTML += "<p>";
//for (var i in formData) {
// par.innerHTML += formData[i] + "<br>";
//}
//par.innerHTML += "</p>";
var uriString = myUrl;
$.ajax({
url: uriString,
type: "POST",
//data: JSON.stringify(formData)
data: { "type" : formData[0], "quantity" : formData[1], "cost" : formData[2], "vehicle_id" : formData[3] }
});
我在windows 8手机上做这个,成功函数没有执行,也没有数据添加到数据存储区。
这是 POST 请求的后端代码
class AddVehicle(webapp2.RequestHandler):
def post(self):
"""Creates a vehicle entity
POST Vehicle Variables:
vehicle_type = vehicle type - required
make = Make - requried
model = Model - required
year = Year - required
"""
new_vehicle = Vehicle()
vehicle_type = self.request.get('type', default_value=None)
make = self.request.get('make', default_value=None)
model = self.request.get('model', default_value=None)
year = self.request.get('year', default_value=None)
# all required info
new_vehicle.vehicle_type = vehicle_type
new_vehicle.make = make
new_vehicle.model = model
new_vehicle.year = year
self.response.write(new_vehicle)
# post data into datastore
key = new_vehicle.put()
out = new_vehicle.to_dict()
self.response.write(json.dumps(out))
return
这是ndb模型
class Vehicle(ndb.Model):
vehicle_type = ndb.StringProperty(required=True)
make = ndb.StringProperty(required=True)
model = ndb.StringProperty(required=True)
year = ndb.StringProperty(required=True)
【问题讨论】:
-
什么意思?你有后端的东西吗?
-
是的,我正在通过后端的谷歌应用引擎使用网络 API。我无法让它将数据发布到数据存储区
-
那你能显示你的后端代码吗?它收到请求了吗?
-
首先做一些基本的调试,检查服务器日志,看看你的代码是否甚至用 POST 调用你的服务器。如果是,日志中是否有错误?如果是,那么就是你的问题。如果不是,那么首先在后端代码中放置日志语句,看看发生了什么。
-
检查了服务器日志,它正在获取请求。我收到一个 BadValueError(实体具有未初始化的属性:make、vehicle_type、model、year)。谷歌表示它没有获得所需的车辆参数。将 required 更改为 False。
标签: javascript json ajax google-app-engine google-cloud-datastore