Пост с ajax-jquery отправляет пробел, когда в предложении есть + - PullRequest
1 голос
/ 06 июля 2011

Я отправляю запрос по почте, используя jquery ajax, но некоторые из отправляемых мною слов имеют + для объединения слов, таких как: HTA + HIPERAQUITISM + DBLR, PHP-файл, получающий HTA HIPERAQUITISM DBLR, изменяющий + пробелами, я публикуюкод ниже.помогите!

          function getItemInfo(itemName, itemField, itemComparative, itemTable){

                       var result = "";
                       var nombreItem = itemName;
                       var campoItem = itemField;
                       var comparativeItem = itemComparative;
                       var tableItem = itemTable;


                        $.ajax({
                            type: 'POST',
                            async: false,
                            url: 'modules/medicos/controller.php?fun=consul_item&nombre_item=consul_item'+
                                  '&nombre_item='+nombreItem+
                                 '&campo='+campoItem+
                                 '&comparador='+comparativeItem+
                                 '&tabla='+tableItem,
                            success: function(data) {
                                result = data.toString();
                            },
                            failure: function() {
                                result = "";
                            }
                        });
                       return result;
                   }//end function

Ответы [ 2 ]

0 голосов
/ 06 июля 2011

Ваш код кажется правильным.Вы передаете эти переменные одну за другой (nombreItem, campoItem, comptiveItem и tableItem).Поэтому я не совсем понимаю, что вы говорите, что это не работает.

Предложение, чтобы упростить передачу данных:

$.ajax({
      type: 'POST',
      async: false,
      url: 'modules/medicos/controller.php',
      data : ({ fun : consul_item,
                  nombre_item : nombreItem,
                  campo : campoItem,
                  comparador : comparativeItem,
                  tabla : tableItem }), 
      success: function(data) {
            result = data;
      },
      failure: function() {
            result = "";
      }
});

Если вы хотите передать всю свою информацию в виде одной текстовой строки, выследует сделать:

...
data: ({ test : consul_item + '+' + nombreItem + '+' + campoItem + '+' + comparativeItem + '+' + tableItem }), 
...
0 голосов
/ 06 июля 2011

Это потому, что в URL + означает пробел.

Вам необходимо сначала закодировать данные в URL, прежде чем добавлять их в строку запроса.

Вы можете использовать функцию encodeURIComponent () для кодирования вашего значения перед добавлением его в строку запроса.

Как только ваш PHP-код подхватывает его, вы можете затем декодировать значение с помощью функции urldecode

Таким образом, ваш код должен обновиться до следующего вида:

url: 'modules/medicos/controller.php?fun=consul_item&nombre_item=consul_item'+
                                  '&nombre_item='+encodeURIComponent(nombreItem)+
                                 '&campo='+encodeURIComponent(campoItem)+
                                 '&comparador='+encodeURIComponent(comparativeItem)+
                                 '&tabla='+encodeURIComponent(tableItem),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...