json - 如何检索特定的 JSON 数据
问题描述
我想在选择选项表单后检索特定数据。当我选择时,我得到了无法分离的 JSON 格式的数据。我试过 obj.purchase_price 但未定义。我的以下代码提供以下数据
[{"model": "acc.productdetails", "pk": 4, "fields": {"purchase_price": "214.00"}}]
我想要我的表单的 purchase_price 值。请帮我分开价值。我的代码如下
在视图中
def priceFilter(request):
product_id = request.GET.get('product_id',None)
price = {
'data':serializers.serialize("json",ProductDetails.objects.filter(id=product_id),
fields=('purchase_price',))
}
return JsonResponse(price)
在我的页面中,脚本
<script>
$("#id_price").change(function () {
var form = $(this).closest("form");
$.ajax({
url: form.attr("data-validate-price-url"),
data: form.serialize(),
dataType: 'json',
success: function (price) {
if (price.data) {
let obj = price.data ;
alert(obj) ;
}
}
});
});
</script>
我想在这里显示我的数据
<input type="text" name="price" class="form-control" id="p_price" required>
解决方案
序列化程序返回一个字符串,它是一个 JSON blob,而不是带有字典的列表等。
您可以将结果包装在字典中:
from django.shortcuts import get_object_or_404
def priceFilter(request):
product_id = request.GET.get('product_id')
product = get_object_or_404(Product.objects.only('price'), id=product_id)
price = {
'price': product.price
}
return JsonResponse(price)
在响应中,您可以使用以下命令检索对象:
success: function (data) {
if (data.price) {
let obj = data.price;
alert(obj) ;
}
}
注意:通常最好使用
get_object_or_404(…)
[Django-doc],然后直接使用.get(…)
[Django-doc]。如果对象不存在,例如因为用户自己更改了 URL,get_object_or_404(…)
将导致返回HTTP 404 Not Found响应,而 using.get(…)
将导致HTTP 500 Server Error。
推荐阅读
- javascript - 使用没有服务器端渲染 (cookie) 的 CSP 随机数
- ios - 无法从 iOS 应用访问 Firebase 存储默认存储桶
- sql-server - 通过 ASP 文件运行存储过程
- swift - 使用 Alamofire 固定公钥
- amazon-s3 - 无法弄清楚为什么我的代码打印“无”。即使它应该带来价值
- jquery - jQuery - 带收音机的切换类
- sql - 使用不同数据类型连接表(优化)
- javascript - jQuery qTip 在键盘点击时显示/隐藏(输入键)
- java - 将非静态类的实例化扩展为静态类
- asp.net - 将 SSL3 和 TLS 与 .Net Core ASP.Net MVC 一起使用