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 对象。