jQuery ajax() 成功数据 - 从 Python 服务器检索对象结果
jQuery ajax() success data - retrieving object results from Python server
我试图在 Python 服务器 (GAE) 的 jQuery ajax 函数后显示成功数据。我能够使它只使用一个字符串或数字作为成功数据,但我想在 ajax 调用中从服务器中继几条信息。我认为最好的方法是将数据存储在 Python 对象中,然后在回调中发送该对象。对象显示为“”,但对象属性为 "undefined".
非常感谢您提供的任何建议-
Javascript:
$.ajax({
type: "POST",
url: "/update_cart",
data: {'item1': item1, 'item2': item2, 'item3': item3},
//dataType: 'jsonp',
success: function(data) {
$("#amount").val(data.total); $("#shopping_cart_count").text(data.cart_item_count);
alert(data); //displays "<main.ajaxObject object at 0x042C8890>"
alert(data.cart_item_count); //displays "undefined"
}
});
Python代码:
data = ajaxObject()
data.cart_item_count = 5
data.total = 10
logging.info("*****data.cart_item_count %d ******" % data.cart_item_count ) #displays correctly
logging.info("*****data.total %d ******" % data.total ) #displays correctly
self.response.out.write(data); #respond to ajax success with data object
您需要 JSON 像 Shaunak D 描述的那样对数据进行编码。您得到的错误是告诉您 json
包不知道如何将您的 ajaxObject
实例编码为字符串。
您可以使用自定义 JSON 编码器来解决此问题,详见 https://docs.python.org/2/library/json.html(第 "Extending JSONEncoder" 部分)
或者(更容易),您可以只使用字典来表示您的数据:
data = {
'cart_item_count': 5,
'total': 10
}
self.response.out.write(json.dumps(data))
jQuery 的 ajax 函数应自动将 JSON 字符串解码为 Javascript 对象。
我试图在 Python 服务器 (GAE) 的 jQuery ajax 函数后显示成功数据。我能够使它只使用一个字符串或数字作为成功数据,但我想在 ajax 调用中从服务器中继几条信息。我认为最好的方法是将数据存储在 Python 对象中,然后在回调中发送该对象。对象显示为“”,但对象属性为 "undefined".
非常感谢您提供的任何建议-
Javascript:
$.ajax({
type: "POST",
url: "/update_cart",
data: {'item1': item1, 'item2': item2, 'item3': item3},
//dataType: 'jsonp',
success: function(data) {
$("#amount").val(data.total); $("#shopping_cart_count").text(data.cart_item_count);
alert(data); //displays "<main.ajaxObject object at 0x042C8890>"
alert(data.cart_item_count); //displays "undefined"
}
});
Python代码:
data = ajaxObject()
data.cart_item_count = 5
data.total = 10
logging.info("*****data.cart_item_count %d ******" % data.cart_item_count ) #displays correctly
logging.info("*****data.total %d ******" % data.total ) #displays correctly
self.response.out.write(data); #respond to ajax success with data object
您需要 JSON 像 Shaunak D 描述的那样对数据进行编码。您得到的错误是告诉您 json
包不知道如何将您的 ajaxObject
实例编码为字符串。
您可以使用自定义 JSON 编码器来解决此问题,详见 https://docs.python.org/2/library/json.html(第 "Extending JSONEncoder" 部分)
或者(更容易),您可以只使用字典来表示您的数据:
data = {
'cart_item_count': 5,
'total': 10
}
self.response.out.write(json.dumps(data))
jQuery 的 ajax 函数应自动将 JSON 字符串解码为 Javascript 对象。