2010-09-23 3 views
5

Пытается передать пробелы вместе с вызовом ajax.Передача стоимости, включая пробелы на звонке Ajax

«Слово» передано так же, как «слово», я так считаю.

С другой стороны, два слова должны быть отправлены полностью с вызовом.

«слово второй», но не такой же, как «слово» второй

Должен ли я обрезать перед вызовом или делать это на стороне сервера скрипт? Как я могу отправить пробелы?

ответ

1

Я знаю, что это старый Ques но я хотел бы указать, что принятый ответ предлагает функцию, которая устарела с версии JavaScript версии 1.5.

Вместо этого вы должны использовать либо encodeURI(), либо encodeURIComponent() для отправки пробелов и других специальных символов.

var param = encodeURIComponent("word second "); 
console.log(param); // outputs 'word%20second%20' 

PHP на другом конце будет обрабатывать декодирование автоматически. Это дает вам возможность обрезать места, где вы найдете их наиболее практичными. Если это действительно не имеет никакого значения технически, я бы обрезал пробелы в JavaScript-коде, используя функцию trim(), потому что он сохраняет крошечную полосу пропускания сети и немного снижает нагрузку на сервер, обрезая клиентскую сторону.

0

Самый простой способ, я думаю, это encodeURIComponent строки в JavaScript перед отправкой XMLHttpRequest, а затем urldecode это в PHP

+1

urldecode производится автоматически – zerkms

4

Чтобы разрешить параметр включать пробелы и т.д. Вы будет хотеть использовать функцию javascript escape() [W3Schools].

escape('hello world ') = 'hello%20world%20'; 

Обработка на стороне PHP будет автоматически декодировать/экранирование в параметре, восстановление пространства (вместе с любыми другими символами, которые не могут быть частью значения параметра, когда посылаются через AJAX, такие как «=» или " &».

в PHP, если вы желаете, чтобы сдирать все ведущие или ведомые пробелы, вы можете использовать PHP trim() [PHP.net] функция.

trim('hello world ') = 'hello world'; 
Смежные вопросы