#javascript #jquery #ajax #laravel
#javascript #jquery #ajax #laravel
Вопрос:
Я создаю рейтинговую систему с помощью JavaScript, когда пользователь выбирает значение звездочки, установленное в скрытом типе ввода. теперь я хочу получить это значение в своем ajax-коде и опубликовать в базе данных.
Я пытаюсь таким образом получить значение ввода
$(document).ready(function(){
$('#ajaxSubmit').click(function(e){
e.preventDefault();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/review",
type: 'POST',
data: {
description: $('textarea[name=description]').val(),
star: $('input:hidden[name=score]').val(),
user_id: {{Auth::user()->id}},
product_id: {{$product->id}}
},
dataType: "JSON",
success: function(result){
console.log(result);
}
});
});
});
в реальном файле этот код показывает
<div class="star big" id="rating" data-score="0"></div>
После выбора звезды, отображаемой в коде ресурса
<div class="star big" id="rating" data-score="0" style="cursor: pointer; width: 80px;"><img src="assets/images/star-big-on.png" alt="1" title="bad">
<img src="assets/images/star-big-on.png" alt="2" title="poor">
<img src="assets/images/star-big-on.png" alt="3" title="regular">
<img src="assets/images/star-big-on.png" alt="4" title="good">
<img src="assets/images/star-big-on.png" alt="5" title="gorgeous">
<input id="star" type="hidden" name="score" value="5"></div>
в результате отображается нулевое значение звезды
Комментарии:
1. Результат консоли {звезда: null,}
Ответ №1:
Ваш селектор запросов для элемента кажется правильным, но я считаю, что ваш объект данных javascript неверен. Вы используете синтаксис блейда в объекте, поэтому вам, скорее всего, следует заключить его в кавычки. В частности, я говорю об этих двух строках:
user_id: "{{Auth::user()->id}}",
product_id: "{{$product->id}}"
И я полагаю, что вы используете это в представлении блейда, а не в .js
файле.
Комментарии:
1. я использую перед закрытием тела, и в том же файле все правильно, они получают user_id, product_id и описание vlaue, просто значение звезды не получают.
2. И в консоли разработчика, если вы попытаетесь вызвать ту же страницу
$('input:hidden[name=score]').val()
, получите ли вы правильное значение? Я говорю о консоли разработчика браузера.3. Вы также можете попробовать
$('#star').val();
, поскольку у вас уже есть идентификатор, но я сомневаюсь, что это проблема.4. Я пробую обе консоли браузера, результат одинаковый. этот скрытый ввод хранится в другом файле js, но я использую код ajax в том же HTML-файле
5. Результат консоли {описание: «ssssss», star: null, user_id: «2», product_id: «1»}описание: «ssssss»product_id: «1»star: nulluser_id: «2» proto : Object