所以我一直在搜寻互联网,我找不到任何适合我的东西。我有一个简单的html表单,我需要通过JSON发送到app引擎数据存储区。
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)
答案 0 :(得分:0)
让它发挥作用:
$.ajax({
url: uriString,
type: "POST",
contentType: "application/x-www-form-urlencoded", //<-- THIS
data: { type: vehicle_type, make: vehicle_make, model: vehicle_model, year: vehicle_year },
success: function (result) {
WinJS.Navigation.navigate("/pages/vehicleAdd/vehicleAdd.html");
}
});
原来我需要发送url编码的表单数据而不是json ...