ajax - 同一个表单中的两个动作
问题描述
我需要你的帮助。我的 PHP 页面上有 5 个表单,并且在没有提交按钮的情况下发送数据处理。我通过将数据发送到处理数据并将我需要的信息返回到另一个页面的控制器(存储)来做到这一点。表单的提交由 AJAX 函数完成。
问题是现在我需要获取用户在表单中填写的信息,然后通过单击按钮生成一个带有标记选项的 PDF。怎么可能在同一个表单中有两个不同的动作?有必要在不提交的情况下处理数据,并且在处理后您可以单击转到另一个页面的按钮。
阿贾克斯功能:
function enviaForm(){
var url = $("#formulario").attr("action");
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: "POST",
url: url,
data: $("#formulario").serialize(),
dataType: "json",
beforeSend: function(){
$('.ajax-loader').css("visibility", "visible");
},
success: function($retorno){
$("#inputLimCalculado").text ($retorno.limFinal);
$("#inputRisco1").text ($retorno.risco1);
$("#inputRisco2").text ($retorno.risco2);
$("#inputAuxCheqOuro").text ($retorno.auxCheqOuro);
$("#inputAuxCartaoEmp").text ($retorno.auxCartaoEmp);
preencherPortfolio();
},
error: function($retorno){
console.log($retorno);
},
complete: function(){
$('.ajax-loader').css("visibility", "hidden");
}
});
preencherPortfolio();
}
形式:
@extends('entidades.layout')
<header class="row">
@include('entidades.header')
</header>
@section('conteudo')
<div class="container">
<br>
{{ csrf_field()}}
<table class="table table-primary">
<tr>
<td>MCI: {{ $entidades->cd_cli}}</td>
<td>Entidade: {{$entidades->nome}}</td>
</tr>
<tr>
<td>Atividade: {{$entidades->nom_atv}}</td>
<td>Natureza: {{$entidades->nom_atv}}</td>
</tr>
</table>
<button class="btn btn-primary mb-2" type="button" onclick="window.location='{{ route('entidade.index') }}'">Voltar à Consulta</button>
</div>
<div class="container">
<button class="btn btn-primary" type="button" id="entidadeBtn">
Dados da Entidade
</button>
<button class="btn btn-primary collapsed" type="button" id="dirigente1Btn" onclick="validaFormEnt();">
Dirigente 1
</button>
<button class="btn btn-primary collapsed" type="button" id="dirigente2Btn">
Dirigente 2
</button>
<button class="btn btn-primary" type="button" id="portfolioBtn" onclick="validarDirigentes();">
Portfólio
</button>
<button class="btn btn-primary" type="button" id="parecerBtn">
Parecer
</button>
<!-- botão teste para o desenvolvedor -->
<button class="btn btn-primary" type="button" id="desenvBtn">
Desenvolvedor
</button>
<!-- enviar dados na controller store para o cálculo do modelo -->
<form method="post" action="{{ route('entidade.store') }}" name="form" id="formulario">
<input type="hidden" name="mci" value="{{$mci}}"/>
<meta name="csrf-token" content="{{ csrf_token() }}">
<input type="hidden" name="_token" value="{{ csrf_token() }}"/>
<input type="hidden" name="cd_nat" value="{{$entidades->cd_nat}}"/>
<input type="hidden" name="nom_atv" value="{{$entidades->nom_atv}}"/>
<!-- Receber se os formulários foram preenchidos -->
<input type="hidden" name="entControle" id="entControle" value="{{ csrf_token() }}"/>
<input type="hidden" name="dirig1Controle" id="dirig1Controle" value="{{ csrf_token() }}"/>
<input type="hidden" name="dirig2Controle" id="dirig2Controle" value="{{ csrf_token() }}"/>
<!-- ////////////////////////////////////////////////////////////////////// -->
<!-- //////Formulário da entidade////////////////////////////////////////// -->
<!-- ////////////////////////////////////////////////////////////////////// -->
<div id="entidadesToggle" style="display:none;">
@include('entidades.entidade')
</div>
<!-- ////////////////////////////////////////////////////////////////////// -->
<!-- /////////Formulário do dirigente 1//////////////////////////////////// -->
<!-- ////////////////////////////////////////////////////////////////////// -->
<div id="dirigente1Toggle" style="display:none;">
@include('entidades.dirigente1')
</div>
<!-- ////////////////////////////////////////////////////////////////////// -->
<!-- /////////Formulário do dirigente 2//////////////////////////////////// -->
<!-- ////////////////////////////////////////////////////////////////////// -->
<div id="dirigente2Toggle" style="display:none;">
@include('entidades.dirigente2')
</div>
<!-- ////////////////////////////////////////////////////////////////////// -->
<!-- /////////////////////////////////Portfólio//////////////////////////// -->
<!-- ////////////////////////////////////////////////////////////////////// -->
<div id="portfolioToggle" style="display:none;">
@include('entidades.portfolio')
</div>
<!-- /////////////////////////////////////////////////////////////////////// -->
<!-- /////////////////////////////////Parecer/////////////////////////////// -->
<!-- /////////////////////////////////////////////////////////////////////// -->
<div id="parecerToggle" style="display:none;">
@include('entidades.parecer')
</div>
<!-- botão para gerar súmula -->
<button class="btn btn-primary" type="submit" id="gerarBtn" action="pagina.php" >
Gerar Súmula
</button>
</form>
<div class="ajax-loader" style = "display:none;">
<img src="{{ url('img/ajax-loader.gif') }}" class="img-responsive" />
</div>
</div>
@endsection
控制器:
public function store(Request $request){
......
return json_encode(['limFinal'=> $limFinal, 'mci'=> $mci, 'risco1'=>$risco1, 'risco2'=>$risco2,
'auxCheqOuro'=>$auxCheqOuro, 'auxCartaoEmp'=>$auxCartaoEmp]);
}
解决方案
推荐阅读
- php - 使用 PHP 获取加载的操纵 HTML dom
- javascript - 更改选定日期时记住表单值
- visual-studio - CMake 到 Qt Creator .pro 文件;从 Qt Creator 构建特定的 CMake 项目
- html - VBA网页抓取,SPAN问题
- python - Python vs MATLAB 在算法上的表现
- c# - Page.ClientScript.RegisterStartupScript 不只在一页上注入脚本
- javascript - 抓取需要触发 javascript 的外部网站
- css - 除了谷歌自定义搜索,我如何使用我的所有表格的表格 CSS 属性?
- git - 如何使用 git merge 恢复 master?(即恢复VIA合并)
- java - 我怎样才能返回正确的值?