Django : 未捕获 (在承诺中) 语法错误:在位置 0 的 JSON 中意外<令牌



点击发送数据按钮时出错。请帮我解决问题。单击按钮发送数据时出错。请帮我解决问题。单击按钮发送数据时出错。请帮我解决这个问题。

detail.html

td>
<!-- <a href="{% url 'Detail_pem' %}"><button data-product="{{order.id}}" data-act="{{order.name}}" class="btn btn-warning id_order btntam" >Detail</button> </a> -->
<button data-product="{{order.id}}" data-act="{{order.name}}" class="btn btn-warning id_order btntam" >Detail</button> 
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<!-- <script type="text/JavaScript" src="{% static 'js/pem.js' %}"></script> -->
<script>
var id_order = document.getElementsByClassName('id_order')
for (i = 0; i < id_order.length; i++) {
id_order[i].addEventListener('click', function(){
var orid  = this.dataset.product
var ornm  = this.dataset.act
console.log('orid :', orid)
console.log('ornm :', ornm)
codata(orid, ornm)
})

}
function codata(orid, ornm){
console.log('orid :', orid, 'ornm :', ornm)
const url = "Detail"
fetch(url, {
method :'POST',
headers : {
'Content-Type' : 'application/json',
'X-CSRFToken'  :  csrftoken,
},
body:JSON.stringify({'orid':orid, 'ornm':ornm}),
})
.then((response) =>{
return response.json();
})
.then((data) => {
console.log('Success:', data);
})
}
</script>
{% endblock %}

view.py

def Detail(request):
data    = json.loads(request.body.decode("utf-8"))
orid    = data['orid']
ornm    = data['ornm']
print('id :', orid,'nama :', ornm)
context = {'orid ':orid , 'ornm':ornm}
return render(request, 'store/detail.html', context )

我认为问题是你没有返回一个正确的JSON对象,你正在返回一个字符串,也许试着改变:

从这个:

def Detail(request):
data    = json.loads(request.body.decode("utf-8"))
orid    = data['orid']
ornm    = data['ornm']
print('id :', orid,'nama :', ornm)
return JsonResponse('Payment complete', safe=False)

变成这样:

def Detail(request):
data    = json.loads(request.body.decode("utf-8"))
orid    = data['orid']
ornm    = data['ornm']
print('id :', orid,'nama :', ornm)
return JsonResponse({'status':'Payment complete'}, safe=False)

参见Django文档:

django json response

JavaScript

<script>
var id_order = document.getElementsByClassName('id_order')
for (i = 0; i < id_order.length; i++) {
id_order[i].addEventListener('click', function(){
var orid  = this.dataset.product
var ornm  = this.dataset.act
console.log('orid :', orid)
console.log('ornm :', ornm)
data(orid, ornm)
})

}
function data(orid, ornm){
console.log('orid :', orid, 'ornm :', ornm)
const url = "Detail"
fetch(url, {
method :'POST',
headers : {
'Content-Type' : 'application/json',
'X-CSRFToken'  :  csrftoken,
},
body:JSON.stringify({'orid':orid, 'ornm':ornm}),
})
.then((response) => response.json())
.then((data) => {
console.log('Success:', data);
window.location.href = "{% url 'Detail_pem' %}"
})
}
</script>

view.py

def Detail_pem(request):
data    = json.loads(request.body.decode("utf-8"))
orid    = data['orid']
ornm    = data['ornm']
print('id :', orid, 'nama :', ornm)
context = {'orid ':orid , 'ornm':ornm}
return render(request, 'store/detail.html', context )

def Detail(request):
data    = json.loads(request.body.decode("utf-8"))
orid    = data['orid']
ornm    = data['ornm']
print('id :', orid,'nama :', ornm)
return JsonResponse('Payment complete', safe=False)

出现错误JSONDecodeError at/Detail_pem期望值:第1行第1列(字符0)输入图片描述

最新更新