PHP ile JavaScript çağırıyor

6 Cevap php

Ben tür gibi, bir düğmeye basıldığında bir PHP işlevi çağırmak istiyorum:

<?php 
function output(){
  // do something
}
?>

<input type="button" value="Enter" onclick="output()"/>

Ben şöyle bir şey yapmaya çalıştım:

<input type="button" value="Enter" onclick="test.php?execute=1"/>

dnm.php geçerli sayfa ve daha sonra php ile nerede

<? if(isset(&execute)){ echo "Hello"; } ?>

ama çalışmıyor.

6 Cevap

PHP web sunucusu üzerinde çalışır ve düğmeler (ve bu durumda JavaScript) istemci üzerinde görünür olduğundan, sunucuya bir HTTP isteği yapmak zorunda.

Bunu yapmanın en kolay yolu, bir form kullanmaktır. Hayır JavaScript gereklidir. Sen JavaScript ekleyebilirsiniz (olması gerektiği halde layered on top of a working non-JS version). Sayfayı çıkmadan bir HTTP isteği yapmak için JavaScript kullanarak Ajax olarak bilinen ve genellikle XMLHttpRequest nesne ile elde edilir. Böyle YUI ve jQuery sizin için ağır kaldırma bazı yapabileceği gibi çeşitli kütüphaneler vardır.

Ben bir AJAX çağrısı kullanarak ne soran çeşit yapacağını düşünüyorum. Ben çok iyi PHP bilmiyorum ama aşağıdaki örneği kullanabilirsiniz, ve size sunucu üzerinde aramak istediğiniz işlevi belirtmek için sunucuya geçiyoruz verileri ile başka bir değişken ekleyin. Sunucu üzerinde geçirilen adına göre belli bir işlevi çağırmak ve sonuç dönecektir bazı "EĞER" ifadeleri ekleyebilirsiniz.

Burada AJAX arama yapmak için bir yardımcı olarak jQuery library kullanarak javascript istemci üzerinde kullanabilirsiniz budur:

    <input type="button" value="Enter" onclick="output()"/>
    <script type="text/javascript">
function output(){
	$.ajax({
		type: "POST",
		url: "submit_data.php",
		data: 	"username=" + "SomeUser" 
		+	"&email=" + "someEmail@google.com"
                    +       "&functionName=" + "theFunction1",
		success: function(html){
			alert('sucess!  Result is:' + html);
		}
	});

    }   
</script>

ve sizin javascript yukarıdaki javascript maç için "submit_data.php" olarak bu dosya adını aramak isterim bu örnekte içeri geçiyor verileri yakalamak için bu gibi kodu kullanabilirsiniz:

<?php

    // Variables

    $Username = $_POST['username'];
    $Email    = $_POST['email'];    
    $FunctionName = $_POST['functionName'];

    //Add code here to choose what function to call and echo the result
    // If $FunctionName equals 'theFunction1' then execute theFunction1
    // If $FunctionName equals 'theFunction2' then execute theFunction2

    echo "You called A Page!";

?>

Burada "kullanıcı adı" ve "e-posta" sadece onu kapma ve değişkenleri tutan içine saklayarak ile hiçbir şey yapıyorum. Ama kolay gibi çalıştırmak istediğiniz bir işlev bir isim için denetleme gibi, burada ek işlevler ekleyebilirsiniz.

PHP sunucu tarafı ve javascript istemci tarafında. Yani ben size yapmak istiyorum gerçekten ne olup olmadığından emin değilim?

Eğer özel bir php fonksiyon çağırmak istiyoruz Belki neden açıklayabilir?

Ben Google'da PHP function from button ve this question webdeveloper.com bulundu

Bu Javascript kullanmak değildir.

Bu değil, ASP.NET bahsediyoruz PHP. PHP, bir düğme click olayı diye bir şey yoktur. PHP sunucu üzerinde tamamen çalışan ve istemci tarafı olaylara kesinlikle hiçbir bilgiye sahip.

PHP kodu yalnızca sayfa ilk yüklendiğinde zaman çalışır çünkü ilk denemede çalışmaz. Eğer bir JavaScript işlevini çağırmak zaman çalışmaz. JavaScript ve PHP gibi birbirinden doğrudan konuşamam çünkü ikinci örnek çalışmaz. Doğrudan JavaScript bir PHP işlevi çağırmak çalışıyorum sadece mantıklı doens't. PHP sadece sunucu üzerinde çalışır, unutmayın. JavaScript çalıştırabilirsiniz noktasına ulaşmak zaman, PHP kod uzun beri çalışmalarını tamamladı.

Bir düğme tıklandığında bir şey yapmak istiyorsanız, açıkça geri sunucuya bir istek yapmak zorunda. Sen CTphpnwb önerdiği gibi sadece formu göndererek yapabilirsiniz. Sadece bu sayfayı yeniden yükleyin farkında olmak ve elle kaydetmek ve sayfa durumuna geri yüklemek zorunda kalacak örneğin giriş kutularını yeniden doldurmanız. Sizin için yapacak hiçbir yerleşik büyü vardır.

Alternatif olarak, tüm AJAXy almak ve JavaScript POST yapabilirsiniz. Ancak, isteği göndermek ve yanıtı işlemek için JavaScript yazmak zorunda, ve isteği işlemek için sunucu tarafında PHP kodu yazacaksınız. Bu tek bir sayfada yapmak için biraz garip olur.

Gönderen: http://www.dreamincode.net/forums/showtopic72353.htm

Doğrudan Javascript bu şekilde bir PHP işlevini çağırmak olamaz:

  • PHP kodu sunucu üzerinde çalıştırılır
  • HTML / Javascript istemci tarafında yorumlanır.

Bir HTML sayfası oluşturulur ve istemci (tarayıcı) gönderildi, PHP yapabileceği fazla bir şey yok.

Bir çözüm, bir Ajax isteği kullanmak olacaktır:

  • Sizin onclick olay bir JavaScript işlevini çağırır
  • Bu Javascript fonksiyon Ajax isteği başlatmak olacaktır: sunucuya gönderilen bir istek
  • Sunucu daha sonra bazı PHP kodu çalıştırmak istiyorum
  • Ve sonra, müşteriye o yürütmenin sonucu dönmek
  • Ve senin Javascript kodu bu sonucu elde etmek mümkün olacak ve sunucu tarafından döndürülen ne bağlı olarak hareket ediyorum.

Bir Ajax isteği yapmak için çözümler bol vardır:

  • Sen tekerleği yeniden icat edebilirsiniz; bu karmaşık değil, demeliyim - ama sonraki noktaya bakınız
  • Zaten jQuery, Prototype gibi, bir Javascript çerçeve kullanıyorsanız ... Bunlar Ajax isteklerini yapmak için sınıfları / yöntem / fonksiyonlarını sağlamak

Biraz Googling dersiniz, lots öğreticiler / örnekler alacak ;-)