AJAX form girişi PHP değişkenleri alınıyor

4 Cevap php

Ben usulüne uygun bir MySQL tablosu ekler onları bir PHP dosyası değişkenleri göndererek bir PHP bir form var.

Ben şu anda PHP yanıtı (PHP tarafından yazdırılan şey olan) gösteren bir div var.

Tüm çalışıyor. Sorun benim yarattığım / PHP MySQL insert işlemi sırasında güncellenen değişkenleri kullanmak istiyorum. Yani Bu PHP dosyası yazdırılır ne göstermek, ancak bu değişkenleri KULLANIN değil sadece.

Ben belki bu ayrımı geçmeye JSON kodlaması karmaşık kullanımını gördük, ama bu basit yaklaşım olmadığını bilmek isterim. Ve herkes bu konuda herhangi bir iyi bağlantılar veya örnekleri varsa.

4 Cevap

Ben size sayfa AJAX ile geri gönderilen verilerin birden çok parça var ve bu işlemek mümkün istediğinizi varsayalım.

JSON gerçekten bunu yapmak için basit bir yoldur. Eğer PHP5 kullanıyorsanız, geri tarayıcı sayfasına (örneğin bir nesne ya da bir dizi gibi) karmaşık bir veri türü göndermek için PHP taraftan json_encode () kullanabilirsiniz. Javascript kullanılabilir bir karmaşık türü içine geri ayrıştırmak için var data = eval (yanıt) ;): Sonra javascript, sen (eski geri gönderilen veriler üzerinde eval () kullanın.

Nasıl yapmak ve daha ayrıntılı olarak açıklamak için burada bir yanıt hiç verebilecek daha gösterecektir orada öğreticiler ton vardır.

Kullan PrototypeJS ve bu gibi bunu:

Bu gibi bazı PHP var

 $jsonHeader = array();  

 if($_REQUEST['param1'])  
 {  
   echo '<p>You passed ' . $_REQUEST['param1'] . '</p>';  
   $jsonHeader['status'] = 'Success';  
 }else  
 {  
   $jsonHeader['status'] = 'Failed because the request was invalid';  
 }  

 if(is_array($jsonHeader) and sizeof($jsonHeader) > 0)  
 {  
   header('X-JSON: (' . json_encode($jsonHeader) . ')');  
 }

Sonra bu gibi Ajax arama yapmak

new Ajax.Request('dostuff.php', {  
   method:  'get',  
   parameters:  {'param1':  'this is param 1'},  
   onSuccess:  function(response, jsonHeader){  
    if(jsonHeader['status'] == 'Success'){  
      //Everything is OK, do stuff  
    }else{  
      alert(jsonHeader['status']);  
    }  
   },   
   onFailure:  function(){  
     alert('Fail!');  
   }  
});

Prototip PHP tarafından döndürülen X-JSON başlığını kapmak ve otomatik olarak orijinal PHP ayarlanan değerler bir JavaScript dizi onSuccess fonksiyonunun jsonHeader argüman ayarlar.


Yukarıdaki senaryo sürece JavaScript dönen konum veri miktarı HTTP başlığında sığar kadar iyidir.

Eğer verileri çok geri geçmek gerekirse, sadece PHP çıktı json kodlanmış sonucu ziyade başlığının parçası haline. Sonra Ajax çağrısı yanıt nesnesinin evalJSON () yöntemini kullanabilirsiniz.

Sadece 'o PHP dosyası basılmış', PHP dosyası JavaScript sayfanıza geri övgüyle baskı olabilir ne göstermek zorunda değilsiniz. Daha sonra, yanıtı aldıktan sonra, bu komutları yürütebilir. Bunun için eval fonksiyonunu kullanmak ister, ama burada birçok insan bunu yaparken sizi vazgeçirmek olacaktır :)

Sadece standart çıkış koymak için PHP değişkenleri koymak koymak için "echo" işlevini kullanın.

$ myVarName echo;

Ya ben) (printf tercih XSS sorunları önlemek için giriş BEFORE size çıktı HTML için kontrol ediniz.

Bu gibi bir şey kullanabilirsiniz:

printf ("Sizin giriş oldu:% s", strip_tags (% myInputVar));

Ayrıca, en iyi güvenlik için sayı çıkışında zaman% d veya% f biçemleyecileri kullanmayı unutmayın.