Как получить скрытое входное значение в переменной jQuery 1.10.2 Ajax?

#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