GET kullanarak PHP komut dosyası için JavaScript dizi göndermek için en iyi yolu nedir?

6 Cevap php

Kullanıcıların ekrandaki görsel nesneleri işleyebilirsiniz jQuery ile çalışan interaktif bir web uygulaması var. Bittiğinde, JavaScript nesnelerinin "devlet" veritabanına depolamak için PHP gönderilmesi gerekmektedir. Bunun için GET kullanmayı tercih ediyorum, ama verileri göndermek için POST kullanır çözüm de yaşayabilir.

Şu anda base64 kodlama gibi bir şey kullanarak tüm JS nesneleri seri hale getirmek için düşünme ve gibi bir şey kullanmak ediyorum:

var str = encode_objects();
document.location = 'result.php?result='+str;

Ancak, bir şey JavaScript kendi base64 kodlama işlevi yazma göre biraz daha şık, yol olmak zorunda söylüyor. Iş yapabilirsiniz zaten JavaScript yerleşik bir şey değil mi?

PHP Update: çözme sorun değildir. Ben base64, JSON, PHP ne olursa olsun çözmek için biliyorum. Sorun JavaScript tarafındaki verileri kodlamak için nasıl.

AJAX söz konusu değildir. Bu sayfayı yeniden temiz bir GET veya POST olmak zorundadır.

6 Cevap

json_decode() de burada hizmet etmelidir.

Eğer sadece HTTP isteği için javascript nesnenin JSON temsilini içeren bir dize eklerseniz PHP) (bunu json_decode ve gitmek için bir PHP nesne hazır olabilir.

Düzenleme: Ben o this page, gerekli JSON JS nesneleri dönüştürmek bir JavaScript JSON stringifier, bir bağlantı vardır bahsetmeliyiz.

Eğer nesnelerin durumunu güncelliyorsanız her şeyden önce, bir POST olmalıdır. Tüm GET idempotent tutmaya çalışın.

İkincisi, herhangi bir AJAX yapmak istemiyorsanız bile, JSON hala senin arkadaşın. kolay yolu json içine nesneleri seri ve POST dataload de sonuç dizesi göndermek olacaktır. Orada PHP JSON çözmek için birçok yol vardır, ve tüm hazırsınız.

Bu serialize function kullanın ve sonra PHP ucunda onu unserialize edebilirsiniz.

GET veya POST muhtemelen veri boyutuna bağlıdır: GET geçebilen veri amout üzerinde bir sınırı vardır (2000 bayt gibi bir şey, daha fazla, tarayıcıya bağlı olarak).

Dikkate almak başka bir şey de var: Eğer verileri değiştirerek iseniz, POST kullanmak; için kullanıldığı, GET değil ... olsun ... verileri.

Biçimi hakkında, ben gerçekten base64 gibi şeyler her türlü yaparken özel bir fonksiyon gibi bir şey için gitmek değildir: Ben kesinlikle özgün bir Javascript gösterimde olan JSON, için giderdim.

Eğer örneğin bir göz atabilirsiniz:

JSON üretebilir birçok JS kütüphaneleri var (muhtemelen her JS Framework can ve this one gibi standlone kütüphaneler vardır); ve PHP 5.2 beri (json_encode and json_decode bakınız) Bunu çözmek / kodlamak için PHP işlevleri vardır

Sadece basit bir düz dizi ise PHP olduğu gibi, fantezi bir şey yapmanız gereken bir GET / POST, değişken isimleri parse array syntax için özelliği yerleşik. Yok Aşağıda Kaba bir örnek.

Javascript tarafı:

// Do the parameter-building however you want, I picked the short/messy way
var arrayvalues = [1, 2, 'a'];
var querystring = "var[]=" + arrayvalues.join("&var[]=");
querystring += "&var[something]=abcdef";
// querystring is now "var[]=1&var[]=2&var[]=a&var[something]=abcdef"

PHP tarafı:

var_dump($_POST);
// Remember to validate the data properly!
if ( is_array($_POST['var']) ) {
    count($_POST['var']);
    echo $_POST['var']['something'];
    array_map('do_something_interesting', $_POST['var']);
}

Ben JQuery / JSON kullandım.

var jsonArray = $.toJSON(jsArray);

Sonra JQuery / Ajax yoluyla gönderdi