Jump to content

[Resolvido] Porque é que não funciona?


PF2G
 Share

Recommended Posts

Tenho este pedaço de codigo mas nao escreve nada:

<script>
$(document).ready( function() {
$("#form").submit(function(){
 $.post("save.php", $('#form').serialize(), function(data)
 {
  $("div.total").val(data['total']);
 },'json');
});
});
</script>

<table>
<tr>
 <td class="descricao">PREÇO POR M.L.:</td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><div class="total_met"><?php echo $total_metro;?></div></td>
 <!--<td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $rede;?>REDE </td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $montagem;?> MONT </td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $transporte;?> TRANSP</td>
</tr>-->
<tr>
 <td class="descricao">VALOR TOTAL:</td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><div class="total" ><?php echo $total;?></div></td>
</tr>
</table>

Quero pegar no array que esta no save.php e escrever dentro da <div class="total">

Edited by PF2G
Link to comment
Share on other sites

Obrigado yoda. 👍

Agora tenho outro formulário onde quero fazer a mesma coisa, mas não me aparece nada, submete-me para o mesma página só que não me dá os resultados...

Fiz um alert para ver se aparecia alguma coisa, mas nem o alert aparece 😕

<!---------------------------------------------------------->
<script>
$(function()
{
$("#form_ved").submit(function()
{
  $.post("save.php", $('#form_ved').serialize(), function(data) {
  alert(data_ved.total);
  //$("div.total_metro_ved").text(data_ved.total_metro);
  },'json');
}); 
});
</script>
<!---------------------------------------------------------->

formulário:

<form name="form" id="form_ved" method="post" action="" onSubmit="return false">
<input type="hidden" value="calc_ved" name="action">
(...)----------------------------------------------
<table>
<tr>
 <td class="campo">PREÇO POR M.L.:</td>
 <?php if ($quantidade < 11) $total_metro=0;?>
 <td style="width:104px; border:1px solid #A5ACB2;" class="valor"><div class="total_metro_ved"><?php echo $total_metro ." €";?></td>
 <!--<td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $rede;?>REDE </td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $montagem;?> MONT </td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $transporte;?> TRANSP</td>
</tr>-->
<tr>
 <td class="campo">VALOR TOTAL:</td>
 <td style="width:104px; border:1px solid #A5ACB2;" class="valor"><div class="total_ved"><?php echo $total_metro ." €";?></td>
</tr>
</table>

cálculo:


$total= $preco_total_postes + $preco_quant_rede +$suplementos + $preco_deslocamento + $valor_arame_estica +$valor_total_clip +$valor_total_escora +$valor_farpado+$valor_exec_sapatas;
$total_metro=$total/$quantidade;

$total_ved=number_format ($total,2,',', '.');
$total_metro=number_format ($total_metro,2);
$data_ved = array();
$data_ved['total'] = $total;
$data_ved['total_metro'] = $total_metro;
print json_encode($data_ved);
Link to comment
Share on other sites

na o código (PHP)

$total= $preco_total_postes + $preco_quant_rede +$suplementos + $preco_deslocamento + $valor_arame_estica +$valor_total_clip +$valor_total_escora +$valor_farpado+$valor_exec_sapatas;
$total_metro=$total/$quantidade;
$total_ved=number_format ($total,2,',', '.');
$total_metro=number_format ($total_metro,2);
$data_ved = array();
$data_ved['total'] = $total;
$data_ved['total_metro'] = $total_metro;
print json_encode($data_ved);
Link to comment
Share on other sites

Experimentei agora e não acontece nada na mesma.

E no formulário anterior, tambem nao tenho $(document).ready e funciona 100%.

Só este é que não sei o que se passa...

isso agora depende se tens o codigo js antes ou depois do html

o que o $(document).ready é correr o que está la dentro depois do documento estar carregado

Link to comment
Share on other sites

Pronto, o js está dentro do HTML...

Talvez o problema esteja no .php onde estão os cálculos, deixem-me verificar...

EDIT: nada de errado nos calculos... 😕

Edited by PF2G
Link to comment
Share on other sites

Ele vai buscar ao SAVE.php !!!!

$.post("save.php", $('#form_ved').serialize(), function(data) {

save.php

$total=number_format ($total,2,',', '.');
 $total_metro=number_format ($total_metro,2);
 $data_ved = array();
 $data_ved['total'] = $total;
 $data_ved['total_metro'] = $total_metro;
 print json_encode($data_ved);
Link to comment
Share on other sites

se continuas com essa de "vem do php" acho que vou desistir

já te disse várias vezes para leres o é SERVER-SIDE e o que é CLIENT-SIDE

já te respondi a um post cheio de links para leres ....

eu fiz uma pergunta :

onde é que dentro deste código está declarada a variável data_ved ???

e tu respondes : "vem do traseiro com magia" !!!

quando responderes a minha pergunta terás a tua resposta

mas caso não tenhas lido bem eu volto a perguntar:

ONDE É QUE DENTRO DESTE CÓDIGO ESTÁ DECLARADA A VARIÁVEL DATA_VED ?????

<script>
$(function()
{
 $("#form_ved").submit(function()
 {
   $.post("save.php", $('#form_ved').serialize(), function(data) {
     alert(data_ved.total);
   },'json');
 }); 
});
</script>
Edited by HappyHippyHippo
  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Primeiro, falas direito. Já não é a primeira vez que respondes torto...

E como podes ver aqui eu tenho as mesmas tretas:

Tenho este pedaço de codigo mas nao escreve nada:

<script>
$(document).ready( function() {
$("#form").submit(function(){
 $.post("save.php", $('#form').serialize(), function(data)
 {
  $("div.total").val(data['total']);
 },'json');
});
});
</script>

<table>
<tr>
 <td class="descricao">PREÇO POR M.L.:</td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><div class="total_met"><?php echo $total_metro;?></div></td>
 <!--<td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $rede;?>REDE </td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $montagem;?> MONT </td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $transporte;?> TRANSP</td>
</tr>-->
<tr>
 <td class="descricao">VALOR TOTAL:</td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><div class="total" ><?php echo $total;?></div></td>
</tr>
</table>

Quero pegar no array que esta no save.php e escrever dentro da <div class="total">

E não deu problemas.

Só que desta vez visto que é outr action mudei o nome da variavel $data para $data_ved...

Eu vou buscar os cálculos ao save.php e lá é que crio as variáveis todas. No ficheiro dos formulários vou buscar os cálculos todos.. CAPICHE????

Edited by PF2G
Link to comment
Share on other sites

Primeiro, falas direito. Já não é a primeira vez que respondes torto...

Eu respondo como eu quiser, e se falo troto é porque estou a falar para uma pessoa que tem menor capacidade de LER uma resposta que um bloco de cimento. Isto foi demonstrado vezes sem contra em vários posts/tópicos teus, onde não foste capaz de interiorizar qualquer tipo de informação. Essa situação foi continuamente demonstrada pela repetibilidade dos problemas ou apresentação de posts/tópicos sem a informação necessária, mesmo após o requerimento delas.

E como podes ver aqui eu tenho as mesmas tretas:

então

function(data) {
//   $("div.total").val(data['total']);
    alert(data['total']);
}

é igual a

function(data) {
    alert(data_ved.total);
}

(alterei a linha para ver se ao menos atinges qual é o problema)

E não deu problemas.

claro que não deu problemas porque o primeiro código é válido

Só que desta vez visto que é outr action mudei o nome da variavel $data para $data_ved...

aqui volta a meter o server-side e client-side ao barulho, novamente demonstra que não ligaste nenhum à quantidade de respostas que te foram apresentadas em n tópicos criados por ti anteriormente, onde o problema é relacionado com o AJAX

Eu vou buscar os cálculos ao save.php e lá é que crio as variáveis todas. No ficheiro dos formulários vou buscar os cálculos todos.. CAPICHE????

Eu sei perfeitamente o que o(s) script(s) estão a fazer, não preciso que me expliques um par de linhas de código

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

alert(data_ved.total);

e de onde vem o data_ved ??

onde é que dentro deste código está declarada a variável data_ved ???

<script>
$(function()
{
 $("#form_ved").submit(function()
 {
   $.post("save.php", $('#form_ved').serialize(), function(data) {
     alert(data_ved.total);
   },'json');
 }); 
});
</script>

function(data) {
    alert(data_ved.total);
}

(alterei a linha para ver se ao menos atinges qual é o problema)

só não quem não quer ver ...

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Tentando responder de outra forma: Não podes passar variáveis directamente entre PHP e JavaScript. O PHP é executado no servidor (server-side) e o JavaScript é executado no browser (client-side). Quando a página sai do servidor, já não contém qualquer código PHP, logo é normal que o browser não saiba onde ir buscar esse valor.

Caso tenhas dúvidas, experimenta ver o código fonte da página que chega ao browser.

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Link to comment
Share on other sites

Este é o output HTML antes e depois do submit:

<table>
<tr>
 <td class="campo">PREÇO POR M.L.:</td>
   <td style="width:104px; border:1px solid #A5ACB2;" class="valor"><div class="total_metro_ved">0 €</div></td>
 <!--<td style="width:100px; border:1px solid #A5ACB2;" class="valor">Resource id #14REDE </td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"> MONT </td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"> TRANSP</td>
</tr>-->
<tr>
 <td class="campo">VALOR TOTAL:</td>
 <td style="width:104px; border:1px solid #A5ACB2;" class="valor"><div class="total_ved"> €</div></td>
</tr>
</table>
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.