gpt4 book ai didi

javascript - ajax 调用和 Controller 函数中的多个循环值

转载 作者:行者123 更新时间:2023-12-01 00:49:18 24 4
gpt4 key购买 nike

我在 laravel 中遇到问题,将多个输入选项(由 foreach 循环构建)发送到 ajax 调用中,以便我可以发送多个值并在 ajax 调用中循环它们,以便将它们正确发送到 Controller 。我需要为每组属性调用一个存储过程,这样如果他们选择 3 个选项,ajax 调用就会将它们全部发送,并且我会为这些值调用存储过程 3 次。

Blade :

@foreach($getRuleAttributes as $attributes)
<tr>
<td><input type="checkbox"></td>
<td><label>{{ $attributes->title }}</label></td>
<td><input type="text" class="attribute_data"></td>
<input type="hidden" class="attribute_id" value="{{ $attributes->attributet_id }}">
<input type="hidden" class="attribute_type" value="promo_codes">
</tr>
@endforeach

这提供了一个输入,然后提供了多个带有复选框的选项,可以选择多个

Blade 的ajax部分:

 $("#savePromoCode").click(function(e){ 
e.preventDefault();

/********************************/
/*This is where the issue starts*/
var attr_title
var attr_type_name
var attr_value
/*******************************/


$.ajax({
type:'POST',
url:'postData',
data:{rule_name:rule_name, attr_title:attr_title, attr_type_name:attr_type_name, attr_value:attr_value},
_token: '{{ csrf_token() }}'
});
});

Controller .php

public function postContent(Request $request)
{
$attr_title = $request->attr_title;
$attr_type_name = $request->attr_type_name;
$attr_value = $request->attr_value;

$callProcedure = new procedureService();
$ruleSave = $callProcedure->saveFunction($attr_title,$attr_type_name,$attr_value);
}

我的主要问题是,如果我有多个 attr_title、attr_type_name 和 attr_value 那么我该如何在我的 ajax 调用和 Controller 中协调它?这些变量是由 php foreach 构建的,因此如果它们选择其中的 3 个,那么我需要 ajax 调用来发送所有三个变量,并且 Controller 将调用存储过程 3 次才能将它们全部插入。

我到底该怎么做?

最佳答案

将名称属性更改为数组 []。形式就像

<form id="form">
<?php $i = 1; ?>
@foreach($getRuleAttributes as $attributes)
<tr>
<td><input type="checkbox" name="attribute[{{$i}}]['checked']"></td>
<input type="text" name="attribute[{{$i}}]['attribute_title']" value="{{ $attributes->title }}">
<input type="text" name="attribute[{{$i}}]['attributet_id']" value="{{ $attributes->attributet_id }}">
<input type="text" name="attribute[{{$i}}]['attribute_type']" value="attribute_type1">
</tr>
<?php $i++; ?>
@endforeach

<input type="submit" value="submit" id="savePromoCode">

jQuery 代码

 <script>
$(document).ready(function(){
$("#savePromoCode").click(function(e){
e.preventDefault();

//using serialize send the from data to ajax request file
var form_data = jQuery("#form").serialize();
$.ajax({
type:'POST',
url:'postData',
data:{form_data:form_data,
_token: '{{ csrf_token() }}'

}

});
});
});

</script>

在 Controller 中使用 parse_str获取数组中的序列化值。

 public function postContent(Request $request){
$form_data = $request->form_data;
parse_str($form_data, $my_array_of_vars);
$attr = $my_array_of_vars['attribute'];

/*echo "<pre>";
print_r($attr);*/

foreach($attr as $key=>$value){

//get the value of checked row - attribute_title, attributet_id, attribute_type, Confirm what attr you need use that one
if(isset($value["'checked'"]) && $value["'checked'"] != ''){
echo $attribute_title = $value["'attribute_title'"];
echo $attributet_id1 = $value["'attributet_id'"];
echo $attribute_type1 = $value["'attribute_type'"];
$callProcedure = new procedureService();
}
}
}

关于javascript - ajax 调用和 Controller 函数中的多个循环值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57114595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com