Ajax POST isteği veritabanına alanları ile veri alınamıyor

2 Cevap php

Ben bir metin ve bir düğme ile gerçek basit bir formu var ve amacım uyumsuz bir istek var: o eklenebilir böylece sunucusu (PHP / a la Joomla MySQL) için metin göndermek (jQuery $ ajax.) Bir veritabanı tablosu.

Burada istemci veri gönderme javascript bulunuyor:

var value= $('#myvalue').val();

$.ajax( {
    type:       "POST",
    url:        "/administrator/index.php",
    data:       {   option: "com_mycomponent",
                    task:   "enterValue",
                    thevalue: value,
                    format: "raw"},
    dataType:   "text",
    success:    reportSavedValue
} );

Kullanım içinde bir boşluk metin girdiğinde ortaya çıkmaktadır. Kullanıcı girerse "This string has spaces", sunucu "Thisstringhasspaces" değerini alır ki ben almak $ _POST değişkeni, dışarı çıkardı tüm boşluklar var.

Etrafa googling edilmiştir, ve ben encodeURIComponent kullanmak gerekir referanslar sürü bulduk. Yani bunu denedim, ama şimdi ben $ _POST aldığım değeri "This20string20has20spaces" dir.

Bu yüzden onu yerine sadece mekanların elimden yüzde işaretleri var yol I beklediğiniz kodlayan ve altıgen numaralarını bırakarak gibi görünüyor.

Gerçekten kafam karıştı. Bu soru, bu tür sorular ve web üzerinde her yerde yanıtladı ve her yerde encodeURIComponent gümüş kurşun olarak nitelendirdi gibi görünüyor. Ama görünüşe göre ben lycanthrope farklı bir cins mücadele ediyorum. Herkes herhangi bir öneriniz var mı?

2 Cevap

O ben performans fark etmemişti ekstra filtre olduğunu çıkıyor. Bu tüm Joomla ile çalışan Çünkü, ben JRequest::getCmd('thevalue') yerine $_POST['theValue] kullanıyordum. Bu fonksiyon, o çıkıyor, '%' gibi tüm bu zahmetli karakterleri, filtreler.

Yani nihai çözüm oybirliğiyle web önerildiği gibi, encodeURIComponent istemci üzerinde kullanmaktır:

var value = encodeURIComponent($('#myvalue').val());

Ve sunucu üzerinde, getVar() hangi ile birlikte filtreleme üzerinde daha fazla kontrol sağlar, için getCmd() ticaret urldecode():

$value = urldecode(JRequest::getvar('thevalue', JREQUEST_ALLOWHTML));

Yine, Karim79 ve Cesar büyük teşekkürler. Ben sana Harker'ı ve Helsing dub - gün için benim kahramanlar! :)

Ben sorun Eğer, lütfen bunu denemek misiniz?

var value = escape($('#myvalue').val());