问题描述
我正在做一个具有多个属性的选择,这是我的代码。我需要关于如何避免将数据发送到 ajax 后不被查看的意见。
所以我的代码是在进行更改之后。如果检测到类映射,数据也应该改变。但数据不会改变。它仅影响第一次更改。
这个form.blade.PHP
<!-- Content -->
<div class="panel panel-default">
<div class="panel-heading">
<h4>{{msg('lbl_update_mapping')}}</h4>
</div>
<div class="table-responsive">
<form class="form-horizontal" action="{{ $route }}" method="post">
{{ method_field('put') }}
{{ csrf_field() }}
<table id="marketingsetting-table" width="100%" class="table table-striped b-t b-b">
<thead>
<tr>
<th>Funnel Stages</th>
<th>Value</th>
</tr>
</thead>
<tbody>
@foreach($marketing_status as $value_ms)
<tr>
<td style="width:60%"> {{$value_ms->name}} </td>
@if($value_ms->code == 'L')
<td> {!! Form::multiDropdown($value_ms->name.'[]',$marketing_mapping,' ',['id'=> $value_ms->code,'class'=>"select2-form mapping"]) !!} </td>
@elseif($value_ms->code != 'L')
<td> {!! Form::multiDropdown($value_ms->name.'[]',[],'class'=>"select2-form mapping"]) !!} </td>
@endif
</tr>
@endforeach
</tbody>
</table>
<div class="col-lg-2 pull-right">
{!! Form::buttonSave('','') !!}
{!! Form::buttonCancel('',route('marketing.marketing_mapping.index')) !!}
</div>
</form>
</div>
</div>
<!-- /content -->
@push('scripts')
<script>
// var table = $('#marketingsetting-table').DataTable({
// {!! Config::get('datatable.setting') !!}
// ajax: '{!! $datatableroute !!}',// columns: [
// { sTitle: '{{msg("lbl_marketing_status")}}',mData: 'name',width:'80%'},// { sTitle: '{{msg("lbl_value")}}',mData:'marketing_mapping',orderable:false },// ],// });
</script>
@endpush
<script>
$( document ).ready(function() {
$('.mapping').on('change',function(){
var mapping = $(this).val();
var id_lead = $('#L').val();
console.log(id_lead);
getData(mapping);
});
function getData(d_mapping){
$.ajax({
type:"GET",dataType: 'json',url: '{!! route("marketing_mapping.mappingAjax")!!}',data:{mapping:d_mapping},success:function(data){
var select_data = [];
var count = 0;
$.each(data,function(i,object){
count++;
});
if(count != 1){
select_data.push({id:'',text:''});
}
$.each(data,object){
select_data.push({id:i,text:object});
});
$('.mapping').select2({ data: select_data });
updateSelect2('.mapping');
},error:function(data){
}
});
}
function updateSelect2(element)
{
$(element).select2({
placeholder:'Please Select',allowClear:true
});
}
});
</script>
映射控制器.PHP
<?PHP
namespace App\Http\Controllers\Setting\Marketing;
use App\Helpers\Forms as Form;
use App\Http\Controllers\Controller;
use App\Models\MarketingMapping;
use App\Models\MarketingStatus;
use App\Repositories\Marketing\MappingRepository;
use App\Repositories\Marketing\MarketingStatusRepository;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Yajra\DataTables\Facades\DataTables;
class MappingController extends Controller
{
public function __construct(MappingRepository $mapping,MarketingStatusRepository $marketingstatus)
{
// Authorization
$this->middleware('authorize')->only(['index','edit']);
$this->marketingstatus = $marketingstatus;
$this->mapping = $mapping;
}
/**
* display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$mappingsetting = $this->mapping->findBy('is_active',1);
$data = [
'breadcrumb' => array(msg('lbl_setting',true) => route('setting'),msg('lbl_marketing'),msg('lbl_mapping')),'content' => 'setting.marketing.marketing_mapping.list',// 'submenu' => 'setting.marketing.navigation','title' => msg('lbl_mapping'),'settingtitle' => msg('lbl_marketing'),'mappingsetting' => $mappingsetting,'datatableroute' => route('marketing.marketing_mapping.getData'),];
return view('layouts.setting_template')->with($data);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$mappingsetting = $this->mapping->findBy('is_active',1);
// $marketingstatus = $this->marketingstatus->findby('is_active',1);
$marketingmapping = $this->mapping->getSelection();
$marketingstatus = MarketingStatus::where('is_active','1')->get();
$data = [
'breadcrumb' => array(msg('lbl_setting',// 'submenu' => 'setting.marketing.','content' => 'setting.marketing.marketing_mapping.form','title' => msg('lbl_mapping'),'settingtitle' => msg('lbl_marketing'),'toggle' => 'mapping','mappingsetting' => $mappingsetting,'route' => route('marketing.marketing_mapping.update',1),'datatableroute' => route('marketing_mapping.getDataID',$id),'type' => $id,'marketing_status' => $marketingstatus,'marketing_mapping' => $marketingmapping,];
return view('layouts.setting_template')->with($data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request,$id)
{
dd($request->all());
$data = $request->except('_token','marketingsetting-table_length','_method');
foreach ($data as $key => $value) {
$marketing_status = json_encode($value);
$userid = Auth::id();
$date = date('Y-m-d H:i:s');
$general = MarketingStatus::where('name',$key)->update([
'marketing_mapping_id' => $marketing_status,'updated_by' => $userid,'updated_at' => $date]);
}
\Session::flash('alert-success','Record Successfully Updated');
return redirect()->route('marketing.marketing_mapping.index');
}
public function getData()
{
// $mappingsetting = $this->mapping->findBy('is_active',1);
$marketingstatus = MarketingStatus::where('is_active',1)->get();
$marketing_mapping = MarketingMapping::all()->pluck('name','id')->all();
return Datatables::make($marketingstatus)
->addColumn('name',function ($marketingstatus) {
return $marketingstatus->name . '<br /><span class="text-muted">' . $marketingstatus->description . '</span>';
})
->addColumn('marketing_mapping',function ($marketingstatus) use ($marketing_mapping) {
$json_data = $marketingstatus->marketing_mapping_id;
$json_data = array_flip($json_data);
$mapping_data = array_intersect_key($marketing_mapping,$json_data);
$mapping_name = implode(',',$mapping_data);
return $mapping_name;
})
->rawColumns(['name'])
->toJson();
}
public function getDataID($id)
{
$marketingstatus = $this->marketingstatus->findby('is_active',1);
$mappingsetting = $this->mapping->findBy('is_active',1);
return Datatables::make($marketingstatus)
->addColumn('name',function ($mappingstatus) {
return $mappingstatus->name . '<br /><span class="text-muted">' . $mappingstatus->description . '</span>';
})
->addColumn('marketing_mapping',function ($marketingstatus) {
$marketingmapping = $this->mapping->getSelection();
return Form::multiDropdown($marketingstatus->name . '[]',$marketingmapping,['class' => 'mapping select2-form','id' => $marketingstatus->code]);
})
->rawColumns(['name','marketing_mapping'])
->toJson();
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
public function getMappingAjax(Request $request)
{
$mapping_id = $request->get('mapping');
$mapping_data = MarketingMapping::wherenotin('id',$mapping_id)->pluck('name','id')->all();
return $mapping_data;
}
}
这是潜在客户行更改前的页面视图:
我这样做的原因是为了避免重复选择相同的数据。有什么办法可以简化流程吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)