foreach循环中有一些单选按钮和一些隐藏字段,但我在循环中犯了错误,无法获得正确的数据。因此,作为一个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在上面的代码中,我添加了输入单选和隐藏在循环中的输入。
在相同的视图文件中,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 transaction error,因为它发送了错误的数据。
例如,当我查看页面源代码时,第二个单选按钮的值在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我做错了什么,我不知道是什么
诚挚的问候
发布于 2020-04-11 22:16:26
Ok问题已解决,循环文件和ajax变量中存在错误。
查看刀片文件
<div class="l-flex">
@php
$sum = array_sum(array_column($data['option'],'poll_results_count'));
@endphp
@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" id="{{ $option['id'] }}" name="poll_id" value="{{ $option['poll_id'] }}">
<input type="radio" name="option_id" value="{{ $option['id'] }}" >
<span class="checkerCircle__span"></span>
</label>
@endforeach
<input type="hidden" name="user_id" value="{{Auth::user()->id}}">
</div>以下代码属于ajax
<script type="text/javascript">
$(document).ready(function(){
$('input[type="radio"]').click(function(){
var option_id = $(this).val();
var poll_id = $('input#'+option_id+'').val();
var user_id = $('input[name="user_id"]').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);
location.reload(true);
},
error:function(e){
console.log(JSON.stringify(e));
console.log('error');
}
});
return false;
});
});
</script>https://stackoverflow.com/questions/61129309
复制相似问题