Bir form alanının içeriğini bir PHP betiğine AJAX aracılığıyla POST'liyorum ve JavaScript'i escape(field_contents)
'a kullanın. Sorun, herhangi bir artı işaretinin sıyrılıp yer değiştirmesidir. Artı işaretini güvenli bir şekilde 'nasıl' kodlayabilirim ve sonra PHP tarafında uygun şekilde 'çözebilirim'?AJAX POST ve Artı İşaret (+) - Nasıl Kodlanır?
cevap
Onları JSde ve PHP'de encodeURIComponent() kullanın doğru değerleri almalısınız.
Not: PHP'de $_GET
, veya $_REQUEST
'a eriştiğinizde, daha önce kodu çözülen değerleri alıyorsunuz demektir.
Örnek: JS
: En sunucuda
// url encode your string
var string = encodeURIComponent('+'); // "%2B"
// send it to your server
window.location = 'http://example.com/?string='+string; // http://example.com/?string=%2B
:
echo $_GET['string']; // "+"
Bu url kodlanmış verileri içeren yalnızca ham HTTP isteği olduğunu.
Bir GET isteği için bunu URI. $_SERVER['REQUEST_URI']
veya $_SERVER['QUERY_STRING']
'dan alabilirsiniz. kodlanmış bir POST için file_get_contents('php://stdin')
Not:
decode()
sadece tek bayt kodlanmış karakterler için çalışır. Tam UTF-8 aralığı için çalışmayacaktır.
örn
text = "\u0100"; // Ā
// incorrect
escape(text); // %u0100
// correct
encodeURIComponent(text); // "%C4%80"
Not: UTF-8 temsil ettiği bayt dizisi (\xc4\x80
) olan escape('\xc4\x80')
: "%C4%80"
eşdeğerdir. Yani encodeURIComponent() yöntemini kullanırsanız, sunucu tarafınızın UTF-8 olduğunu bilmesi gerekir. Aksi halde PHP kodlamayı karıştırır.
Tek takip: TARİF yazısını (metin) kodladığımda ve metin akıllı alıntı (&rsqo;) gibi karakterleri içeriyorsa, php betiği gereksiz karakterleri görüyor gibi görünüyor. Sanırım bir kukla problemi, ama nasıl çözeceğimi bilmiyorum. "Content-Type" ile AJAX POST'unu yapıyorum: "application/x-www-form-urlencoded; charset = UTF-8" ve sunucu tarafında PHP5 kullanıyorum. – jalperin
Bu karakterleri nasıl görüntülüyorsunuz? Tarayıcının UTF-8 olduğunu bildiğinden emin olmalısın. HTML'de '' veya '' i de ayarlayabilirsiniz. PHP'de İçerik Türü HTTP Üstbilgisi ile.header ('Content-Type: text/html; charset = UTF-8'); 'PS: &rsqo; tarayıcıda kod çözmez (FF3.5). – bucabay
Seni seviyorum çocuklar! bana her zaman yardım edersin! :) – Alejandra
JavaScript'inizde deneyin:
encodeURIComponent()
ve PHP:
urldecode($_POST['field']);
kodlama değil kodlama (field_contents) kullanıyordum, doğru cevap - ama kodlanmış HTML kodlu veri üretmediği için html_entity_encode yolu kapalı. – Quentin
Aradığınız onaltılık değer %2B
otomatik PHP'de almak urlencode($stringVal)
aracılığıyla dize çalıştırmak için ise . Ve sonra geri almak için urldecode($stringVal)
rhough çalıştırın.
JavaScript idare istiyorsanız
escape(str)
düzenle
kullanmak ve o doğrudur. encodeURIComponent(str)
ve decodeURIComponent(str)
'u kullanın. Kaçış karakterleri dönüştürmeyecek, sadece \
* JavaScript'te '' escape' (veya 'unescape') kullanmayın; URL kodlamasıyla aynı değildir ve + ve ASCII olmayan Unicode karakterleri için yanlıştır. encodeURIComponent/decodeURIComponent neredeyse istediğiniz her şeydir. – bobince
Eğer php'de bir curl yapmak zorundaysanız, PHP'den urlencode()
'u kullanmalısınız; Eğer urlencode(strPOST)
yaparsanız
strPOST = "Item1=" . $Value1 . "&Item2=" . urlencode("+")
, size başka bir sorun getirecektir, değişikliğin% xx değerini olmak ve bir değer olarak olacak bir Öğe1'ı ve & olacak, aşağıya dönüşünü görün!
Örnek 1
$strPOST = "Item1=" . $Value1 . "&Item2=" . urlencode("+") will give Item1=Value1&Item2=%2B
Örnek 2
$strPOST = urlencode("Item1=" . $Value1 . "&Item2=+") will give Item1%3DValue1%26Item2%3D%2B
Örnek 1 reseptörü eşit görmeyeceğinizi kıvırmak
Örnek 2 içinde POST dize hazırlamak için iyi bir yoldur ve ampersand her iki değeri de ayırt eder!
benim sorunum vurgular (á a n) ve ben mysql javascript "kod örnekleri" kurtarmaya çalışmak artı işareti (+) ile oldu:
benim çözüm (değil iyi bir yol, ancak) çalışır:
javascript:
function replaceAll(text, busca, reemplaza){
while (text.toString().indexOf(busca) != -1)
text = text.toString().replace(busca,reemplaza);return text;
}
function cleanCode(cod){
code = replaceAll(cod , "|", "{1}"); // error | palos de explode en java
code = replaceAll(code, "+", "{0}"); // error con los signos mas
return code;
}
fonksiyon kaydetmek için:
function save(pid,code){
code = cleanCode(code); // fix sign + and |
code = escape(code); // fix accents
var url = 'editor.php';
var variables = 'op=save';
var myData = variables +'&code='+ code +'&pid='+ pid +'&newdate=' +(new Date()).getTime();
var result = null;
$.ajax({
datatype : "html",
data: myData,
url: url,
success : function(result) {
alert(result); // result ok
},
});
} // end function
fu php alanındaki olumsuz:
<?php
function save($pid,$code){
$code= preg_replace("[\{1\}]","|",$code);
$code= preg_replace("[\{0\}]","+",$code);
mysql_query("update table set code= '" . mysql_real_escape_string($code) . "' where pid='$pid'");
}
?>
daha ilginç hale getirmek için ve umarım bir başkası için çekerek daha az saç etkinleştirmek için. Python'u kullanarak, yapılandırmak için curl kullanabileceğimiz bir aygıt için sözlük oluşturduk.
Sorun: {"timezone":"+5"} //throws an error " 5"
Çözüm: {"timezone":"%2B"+"5"} //Works
Yani, özetle: Bu yayına
var = {"timezone":"%2B"+"5"}
json = JSONEncoder().encode(var)
subprocess.call(["curl",ipaddress,"-XPUT","-d","data="+json])
teşekkür!
- 1. Ajax POST ve Django Tastypie
- 2. AJAX Çağrısı'nı (POST) Bitir
- 3. JSON AJAX POST
- 4. AJAX XMLHttpRequest POST
- 5. Eclipse'de CSS nasıl kodlanır?
- 6. ajax post kullanırken dinamik tablo nasıl doğrulanır?
- 7. ajax ile post isteği nasıl gönderilir?
- 8. AJAX POST istekleri urlencode yok '+'
- 9. jquery ajax post iptal edildi
- 10. PHP/Apache/AJAX - POST sınırı?
- 11. JQuery Ajax POST in Codeigniter
- 12. Laravel AJAX POST isteği boş
- 13. jQuery ajax Post contentType ve dataType ve veri nedir?
- 14. jQuery nasıl daha modüler kodlanır?
- 15. WinForms'ta bir URL nasıl kodlanır?
- 16. Linux çekirdek modülü nasıl kodlanır?
- 17. ve $ .post ile tamamlayın?
- 18. Python3'te ROT13 nasıl kodlanır?
- 19. Angularjs uri bileşenleri nasıl kodlanır
- 20. Jquery, ajax isteğinde aynı anda GET ve POST parametrelerinin gönderilmesi
- 21. Ajax json POST ve Bahar MVC Denetleyici 8
- 22. Jquery AJAX ile bir formu POST
- 23. javascript: artı
- 24. POST 500 (Dahili Sunucu Hatası) Ajax, React ve Rails kullanarak
- 25. ajax POST çağrısı WCF hizmetine sorun
- 26. Ajax django POST istekleri zamanından önce biter
- 27. AJAX tarafından gönderilen php POST alınamıyor
- 28. AJAX POST - MVC Denetleyici 302 hatası gösteriyor
- 29. Kısmi Görünüm Yenileme sonrasında Jquery Ajax Post
- 30. laravel 5.1 XMLHttpRequest AJAX POST TokenMismatchException
açıklığa kavuşturmak için, – jalperin