I am using django as backend. This is my attempt at star rating. For some reason the url /rate/ loads and it sends empty strings.
My html:
<form action="{% url 'rating' %}" data-page="{{page.name}}" method="post">
{% csrf_token %}
<input class="star star-5" id="star-5" data-rate="5" type="radio" data-cat="{{category.category_name}}" data-page="{{page.name}}" value="5"/>
<label class="star star-5" for="star-5"></label>
<input class="star star-4" id="star-4" data-rate="4" type="radio" data-cat="{{category.category_name}}" data-page="{{page.name}}" value="4"/>
<label class="star star-4" for="star-4"></label>
<input class="star star-3" id="star-3" data-rate="3" type="radio" data-cat="{{category.category_name}}" data-page="{{page.name}}" value="3"/>
<label class="star star-3" for="star-3"></label>
<input class="star star-2" id="star-2" data-rate="2" type="radio" data-cat="{{category.category_name}}" data-page="{{page.name}}" value="2"/>
<label class="star star-2" for="star-2"></label>
<input class="star star-1" id="star-1" data-rate="1" type="radio" data-cat="{{category.category_name}}" data-page="{{page.name}}" value="1" />
<label class="star star-1" for="star-1"></label>
</form>
ajax:
$(document).ready(function(){
const forms=document.querySelectorAll(`form`);
forms.forEach(form=>{form.addEventListener('submit',rating);});
var rate='';
var cat='';
var page='';
$(`input[type=radio]`).on('click',function(){
console.log(this);
rate=$(this).val();
cat=$(this).attr("data-cat");
page=$(this).attr("data-page");
console.log(rate)
$(this).closest("form").submit();
});
function rating(e){
e.preventDefault();
console.log(rate);
$.ajax({
type:'POST',
url:'/rate/',
data:{
category_name:cat,
page:page,
rate:rate,
csrfmiddlewaretoken:$(`input[name=csrfmiddlewaretoken]`).val()
},
sucess: function(){
$('.desc').html(data);
}
});
}
});
it’s not in my text editor…and for live code I would have to deploy the whole project. I have been stuck on this for days.