点击发送数据按钮时出错。请帮我解决问题。单击按钮发送数据时出错。请帮我解决问题。单击按钮发送数据时出错。请帮我解决这个问题。
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)输入图片描述