В поле foreach есть переключатели и некоторые скрытые поля l oop, но в l oop я допускаю ошибки и не могу получить правильные данные. Следовательно, как ошибка ajax: SQLSTATE [23000]: нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ошибка ограничения внешнего ключа.
Json файл ниже
{"data":[
{
"id":1,
"question":"Test Question 1",
"description":"Test Poll Desription",
"creator_id":1,
"results_count":2,
"message_type":"poll",
"poll_result":3,
"creator":{
"id":1,
"name":"Test",
"email":"test@hotmail.com",
"created_at":"2019-05-28T23:29:59.000000Z",
"updated_at":"2020-02-28T18:37:20.000000Z"
},
"option":[
{
"id":1,
"poll_id":1,
"option":"Test 1 Title",
"poll_results_count":0,
"poll_results":[
]
},
{
"id":2,
"poll_id":1,
"option":"Test 2 Title",
"poll_results_count":0,
"poll_results":[
]
},
{
"id":3,
"poll_id":1,
"option":"Test 3 Title",
"poll_results_count":2,
"poll_results":[
{
"id":1,
"poll_id":1,
"poll_option_id":3,
"user_id":4
},
{
"id":34,
"poll_id":1,
"poll_option_id":3,
"user_id":9
}
]
}
]
}
]
}
просмотр файла
@foreach ($data['option'] as $key_option => $option)
<label class="checkerCircle">
{{ isset($option['option']) ? $option['option'] : 'Default' }}
<div class="progress-container">
<div class="progress">
<div class="progress-5"></div>
</div>
<span>
@if ($option['poll_results_count'] == 0)
0%
@else
@php
$yuzde = (100/$sum)*$option['poll_results_count'];
echo $yuzde."%";
@endphp
@endif
</span>
</div>
<input type="hidden" name="poll_id" value="{{ $option['poll_id'] }}">
<input type="radio" name="option_id" value="{{ $option['id'] }}">
<input type="hidden" name="user_id" value="{{Auth::user()->id}}">
<span class="checkerCircle__span"></span>
</label>
@endforeach
В вышеприведенном коде я добавил радио и ввод, скрытый в l oop.
В том же файле просмотра, ajax выглядит следующим образом.
<script type="text/javascript">
$(document).ready(function(){
$('input[type="radio"]').click(function(){
var option_id = $(this).val();
var poll_id = $(this).val();
var user_id = $(this).val();
$.ajax({
url: "{{ route('pool.ajax.home')}}",
type: "POST",
dataType: 'json',
data:{
"_token": "{{ csrf_token() }}",
option_id:option_id,
poll_id:poll_id,
user_id:user_id,
},
success:function(response){
console.log(response);
},
error:function(e){
console.log(JSON.stringify(e));
console.log('error');
}
});
return false;
});
});
</script>
После этих процессов работает только первый ввод. Когда я нажимаю второй или третий переключатель, он выдает sql ошибку транзакции, поскольку отправляет неверные данные.
Когда я, например, смотрю исходный код страницы, значение 2-го переключателя выглядит например, в поле HTML.
<input type="hidden" name="poll_id" value="1">
<input type="radio" name="option_id" value="2">
<input type="hidden" name="user_id" value="9">
, но данные, которые поставляются с ajax, выглядят следующим образом
option_id=2
poll_id=2
user_id=2
Я где-то что-то пропустил или ошибся, я не не знаю, что
С наилучшими пожеланиями