Chamar Metodo PHP no Metodo Javascript - SC6

Pessoal estou com uma duvida:

Estou chamar um metodo php através de um javascript onde ambos foram criados dentro do proprio scriptcase.

Exemplo:

Criei um metodo javascript que tem o codigo abaixo:

confirmar = confirm(“Deseja alterar registros parecidos?”);

if (confirmar) {
//CHAMAR O METODO PHP AQUI

}

else {
return 0;
}

Estou usando a versão do scriptcase 6.

Desde já obrigado.

O Método PHP esta no servidor e o JavaScript no cliente, não acredito ser possivel isso.

Mas porque tem que ser do javascript? porque não usar o php?

Antes de tudo não me leve a mal pela resposta deste tópico, sou hobbista em programação. Grande parte do meu faturamento nao vem disto. Não sei seu nível de conhecimento. Sei que o meu é baixo. Respondi este tópico para mostrar que somente scritpcase não basta para se sair bem no mercado de trabalho como já vi muitos acharem isto neste Fórum. Logo esta resposta não é especifica e unicamente para você Paulo Vaz, mas para ajudar quem está em busca de maior sabedoria na arte da programação. Quem sabe um dia até eu serei sábio nesta área.

Entendam Javascript é uma coisa e PHP outra.
Você não pode chamar um método (biblioteca, função, procedimentos) php de dentro do javascript e vice-versa.
Mas pode chamar um script php e passar parâmetros de dentro do javascript e vice-versa.
Veja isto para ter uma idéia --> http://www.w3schools.com/ajax/ajax_aspphp.asp .
Nele o javascritp invoca um script php e passa parâmetros.
Estes parâmetros são analisados pelo script php que retorna dados “um nome” pelo comando echo para a Linguagem de Marcação de Hipertexto (HTML).

Entenda a WEB é a junção de várias “linguagens”, algumas de programação (dinâmicas) e outras não (estáticas). Como exemplo: html, css, xhtml, xml, javascript, java + tomcat, cgi, phyton, php, asp e etc. Querer que uma entenda a função de outra é como pegar um chinês e dar um manual em português para ele ler. O problema é que este chines nunca aprendeu português e nem tem idéia do que é isto.
Então o que nós programadores WEB e a IDE/Framework Scriptcase fazem é utilizar bastante a passagem de parâmetros entre as diversas “linguagens de programação”.
Sim eu sei! Para quem vem do Delphi, C#, C++,… e nunca teve que usar outras linguagens é estranho. E para quem esta começando agora parece impossível aprender tanta coisa. So que ainda não terminei! Vem o pior de tudo! Chega um momento que ter somente o Scriptcase não basta. É preciso saber pelo menos 50% de tudo o que um navegador pode “mostrar”. Logo, é necessário ser proficiente em : html, css, xhtml, xml, javascript, java + tomcat , cgi, phyton, php ou asp, Rubi… E eu disse proficiente, eu não disse o mestre dos mestres. Apenas tem que saber dar seus pulinhos.
Veja: Você aprende matemática contando nos dedos para depois usar a calculadora e por vezes a cabeça.
Eu comecei com um notepad, alguns manuais de “linguagens” e por vezes um livro. Aconselho a fazer o mesmo no tempo de folga.
Porque se a calculadora falhar ainda tenho meus dedos, se o Scriptcase falhar ou não suprir minhas necessidades eu tenho meu notepad. E vocês tem o que?
Pensem nisto!

Observação: Linguagens de programação é um palavra que me doi o ouvido e é o que a maioria usa, mas entenda-se como linguagem de programação o compilador, as sintaxes e tudo o que for necessário para fornecer instruções ao computador. —> http://pt.wikipedia.org/wiki/Linguagem_de_programação . Eu prefiro o termo linguagem computacional.

Como solução da sua pergunta posso dizer que você pode fazer o método javascript passar parâmetros para seu método php, para isto invoque seu script php (FORM, grid e etc) novamente à partir de seu método javascript. Como fazer? Lição de casa. Mas tem como! Sim é possível e posso dizer pelo menos de duas maneira diferentes às quais terá que descobrir. Abraços e sorte (http://www.w3schools.com/ajax/ajax_aspphp.asp).

Como o Alexandre disse, é possível que vc obtenha uma resposta de um script php chamado por um método javascript. Eu abuso disso em meus sistemas. Penso que a melhor maneira de fazer isso é usando jQuery, que ao contrário do javascript puro, aceita variáveis do php como parâmetro.

Vamos ver um exemplo de como ficaria isso usando o método $.ajax com passagem de parâmetro por GET:

         $.ajax({  
            type: "GET",  
            url: "pagina.php?id=1",  
            beforeSend : function(){
		$("#carregando").fadeIn(); //1//
	},
            complete : function(){
		$("#carregando").hide(); //2//
	}, 
            success: function(data)  
            {
                   $('#conteudo').html(data); //3//
             }  
        });  

//1// -> Antes de enviar a solicitação mostra o elemento html que tem id = carregando
//2// -> Quando a solicitação for completada oculta o elemento html que tem id = carregando
//3// -> Se não ocorrer erro do lado servidor, pega o valor da variável data e carrega no elemento html que tem id = conteudo. A resposta do script php está na variável data, que pode ser toda uma página html ou um simples true/false para que seja possível uma validação dentro do próprio método que chama o script.

Se entendi, a intenção é através do javascript chamar um método php que esta na mesma aplicação.

Chamando outros scripts tudo bem, mas o método da app do sc?

Nesse caso penso eu que não teria como. Meu comentário se refere a uma maneira de fazer isso fora do SC, um exemplo apenas, com a intenção de ampliar o horizonte.

Concordo que é díficil achar onde fazer as coisas no SC.
Mas dei os passos na explicação anterior:

“Como solução da sua pergunta posso dizer que você pode fazer o método javascript passar parâmetros para seu método php, para isto invoque seu script php (FORM, grid e etc) novamente à partir de seu método javascript. Como fazer? Lição de casa. Mas tem como! Sim é possível e posso dizer pelo menos de duas maneira diferentes às quais terá que descobrir. Abraços e sorte (http://www.w3schools.com/ajax/ajax_aspphp.asp).”

Vamos lá para a solução.

  1. Crie um campo ou outra coisa qualquer para controlar se irá ou não usar o metodo php.
    Este campo pode ficar escondigo na aplicação.

PS: o cabeção na frase foi para descontrair

  1. Crie seus metodos php e javascript
    eu criei “metodojavascritp” e “metodophp”
    contéudo do metodojavascript:

resultado=window.confirm(“Preenche o contéudo do campo metodophp?”);
if (resultado) {
document.getElementById(‘id_sc_field_testemetodo’).value=“ok”
document.F1.submit();
}
else
{
document.getElementById(‘id_sc_field_testemetodo’).value=“naook”
document.F1.submit();
}

contéudo do metodo php:

if ({testemetodo}==“ok”)
{
echo " oi cabeção o metodo php foi executado com opção ok";
}
else
{

if ({testemetodo}=="naook") {
echo "<b><font size=5 color=blue> oi cabeção o metodo php foi executado com opção naook<font></b>";
	}

}

Como podem ver o metodo é chamado no inicio da aplicação, mas somente irá fazer algo se o controle for “ok” ou “naook”.

  1. No Evento onLoad do Form coloque a chamada do seu método php:

EVENTO ONLOAD ----> metodophp();

  1. Aqui vem a opção de sua escolha. Eu escolhi usar o evento onchage. Mas com adaptações pode usar até o Form submit, onmouseover. E se for corajoso ira fazer isto fora do menu javascript.
    Eu para facilitar minha vida nesta explicação fui no menu Javascritp escolhi o Objeto CUSTOMER e evento onchange.
    Nele chamei meu método javascript.
    Observação: Se você não sabe porque se chama “objeto” o campo CUSTOMER estude e saberá trabalhar melhor no sc.

Ficou:
function sc_CUSTOMER_onchange()
{
metodojavascript();
}

E pronto.

Para testar rode a app e acesse o campo customer, mude o contéudo do campo e mude o foco (clique em outro lugar ou dê tab).
Repita o passo acima e esolha ok e cancelar para ver a mudança de cor.

Se quiserem testar está em www.simaoebuhler.com.br/teste/
deixarei o projeto em para download em www.simaoebuhler.com.br/teste/sc_201206012159_bkp_ProjetoEmBranco.zip
o banco de dados usado foi o de exemplos do Firebirde pode ser baixado em: www.simaoebuhler.com.br/teste/EMPLOYEE.FDB

PS: Eu gosto de ensinar a pescar, mas não gosto de dar o peixe todo pronto.
Adaptar a sua aplicação e dever de casa.

Alexandre,

O conteudo do campo custume perde a alteraçãe uma recarga eh executado, eu acho que com ajax esse proplema nao ocorre.

Como eu costumo fazer:

Criar o Método php.
Criar um campo btok (checkbox com um item), criar evento onclick para ele, esconder esse campo
No evento ajax onchange do campo executar mensagem ajax, nela adicionar um botão que aciona o evento ajax onclick de btok e o evento que fecha a mensagem ajax.
No evento ajax onclik de btok chamar o metodo php.

Assim o formulário não é submetido e a tela de confirmação aparece executando o método php.

Importante é entender que javascript roda no lado do cliente e php no lado do servidor, por isso incentivo a pesquisa para que o solicitante compreenda bem esses conceitos.

Vou desenvolver um exemplo.

Haroldo,
O campo Customer perde sim o que foi digitado.
Isto é so um exemplo de como usar um metodo javascritp para chamar um metodo php.
Se fosse algo mais sério seria diferente.
O intuito e ensinar a pescar, passar a idéia de como fazer.
Como disse não gosto de dar o peixe pronto.
Isto fica como dever de casa.

Muito bem Alexandre, concordo com você em mostrar o caminho e ajudar o ajudado a criar a capacidade de pesquisa e lógica de programação.

Segue um exemplo aqui, saindo do JavaScript (em termos, pois o Sc é muito javascript no código gerado), puramente com recurso Scriptcase.

http://iw.servehttp.com/sc/iw/app/PluginsSC/iw_exemplos_ajax_confirma

Fiz o exemplo pelo tablet em casa, amanhã disponibilizo a exportação do exemplo.

Muito bom Haroldo. Fico no agurado dos fontes.

o download se encontra na própria demo:

http://iw.servehttp.com/sc/iw/app/PluginsSC/iw_exemplos_ajax_confirma

Obrigado Haroldo. Sempre temos algo a aprender.

Acho que a sugestão desenvolvida especificamente para o solicitante original deste post não atendeu a sua necessidade, pois o único post dele aqui foi a inicial da solicitação de ajuda.

Nenhuma conclusão foi postada para sabermos se atendeu realmente ou não a ajuda.

Ele poderia pelo menos agradecer o tempo que o pessoal dispensou em atenção ao problema dele.

Eu queria isso você ainda os tem alexandre?

Robert,
Boa tarde,
Depois de certo tempo eu apago os exemplos.
Infelizmente não tenho mais.

Haroldo eu tava procurando algo parecido com isso, funcionou perfeitamente!!

É bom saber que sugestões antigas ainda atendem as necessidades atuais.

Segue Clarck:

http://iw.servehttp.com:86/ftp/sc_201505130000_export_LojaPlugin.zip

Lembrando que está na versão 7.