Saya menerapkan Pencarian Instan Google di aplikasi saya. Saya ingin menjalankan permintaan HTTP saat pengguna mengetik input teks. Satu-satunya masalah yang saya alami adalah bahwa ketika pengguna mendapatkan ruang di antara nama depan dan belakang, ruang tersebut tidak dikodekan sebagai +
, sehingga melanggar pencarian. Bagaimana saya bisa mengganti ruang dengan +
, atau hanya dengan aman URL Menyandikan string?
$("#search").keypress(function(){
var query = "{% url accounts.views.instasearch %}?q=" + $('#tags').val();
var options = {};
$("#results").html(ajax_load).load(query);
});
javascript
jquery
ajax
http
Brian D
sumber
sumber
$.param
.Jawaban:
Coba komponen encodeURIC .
Contoh:
sumber
komponen encodeURIC berfungsi dengan baik untuk saya. kita dapat memberikan url seperti ini di ajax call. Kode yang ditunjukkan di bawah ini:
sumber
Cara yang lebih baik:
komponen encodeURIC lolos dari semua karakter kecuali yang berikut:
alphabetic, decimal digits, - _ . ! ~ * ' ( )
Untuk menghindari permintaan yang tidak terduga ke server, Anda harus memanggil komponen encodeURICon pada parameter yang dimasukkan pengguna yang akan diteruskan sebagai bagian dari URI. Misalnya, pengguna dapat mengetik "Thyme & time = lagi" untuk komentar variabel. Tidak menggunakan komponen encodeURICon pada variabel ini akan memberikan komentar = Thyme% 20 & waktu = lagi. Perhatikan bahwa tanda dan tanda yang sama menandai pasangan kunci dan nilai baru. Jadi alih-alih memiliki kunci komentar POST sama dengan "Thyme & time = again", Anda memiliki dua kunci POST, satu sama dengan "Thyme" dan satu lagi (waktu) sama dengan lagi.
Untuk aplikasi / x-www-form-urlencoded (POST), per http://www.w3.org/TR/html401/interac...m-content-type , spasi harus diganti dengan '+', jadi orang mungkin ingin mengikuti penggantian komponen encodeURIC dengan penggantian tambahan "% 20" dengan "+".
Jika seseorang ingin lebih ketat dalam mematuhi RFC 3986 (yang mencadangkan!, ', (,), Dan *), meskipun karakter ini tidak memiliki penggunaan pembatas URI yang diformalkan, hal berikut dapat digunakan dengan aman:
sumber
For application/x-www-form-urlencoded (POST), per http://www.w3.org/TR/html401/interac...m-content-type, spaces are to be replaced by '+', so one may wish to follow a encodeURIComponent replacement with an additional replacement of "%20" with "+".
Bagaimana caranya?Saya menggunakan MVC3 / EntityFramework sebagai back-end, front-end mengkonsumsi semua pengontrol proyek saya melalui jquery, memposting secara langsung (menggunakan $ .post) tidak memerlukan enkripsi data, ketika Anda mengirimkan params secara langsung selain URL yang di-hardcode. Saya sudah menguji beberapa karakter saya bahkan mengirim URL (yang ini http://www.ihackforfun.eu/index.php?title=update-on-url-crazy&more=1&c=1&tb=1&pb=1 ) sebagai parameter dan memiliki tidak ada masalah sama sekali meskipun komponen encodeURIC berfungsi dengan baik ketika Anda melewatkan semua data di dalam URL (hardcoded)
URL Hardcoded yaitu>
Kalau tidak, jangan gunakan komponen encodeURIC dan sebaliknya mencoba melewati params di dalam metode post ajax
sumber
coba yang ini
sumber