2016-09-29 3 views
3

У меня есть АЯКС вызов, который Извлечение JSON представление значения, созданного с помощью метода PHP json_encode:JQuery автозаполнения специальные символы

["Montérégie","Montréal - North Shore ","Montréal - South Shore"] 

Значения в настоящее время собирают из «контроллера/ajax_autocomplete» с помощью JQuery автозаполнение коробка.

$(function(){ $("#regions").autocomplete({    
      source: "controller/ajax_autocomplete", 
      contentType: "application/json; charset=utf-8" 
}               
      });    
    }); 

Всех значений быть corectly подобраны Ui-автозаполнениями JQuery UI, но специальный Charaters теряется. Montréal become Montréal, Montérégie become Montérégie ...

Специальные символы, безусловно, уничтожены во время переноса HTTP, потому что проблема исчезает, если я вручную копирую таблицу JSON в функцию jquery.

$(function(){ $("#regions").autocomplete({    
      contentType: "application/json; charset=utf-8", 
      source: "["Montérégie","Montréal - North Shore ","Montréal - South Shore"]" 
}               
      });    
    }); 

Программным декодирования HTML объект работает текстовое значение ящика, но список предложений по-прежнему заменяет специальные символы с HTML сущностей

$(function(){ $("#regions").autocomplete({    
     source: "controller/ajax_autocomplete", 
     select: function(event, ui) { 
       event.preventDefault(); 
       this.value = $('<div />').html(ui.item.value).text(); 
     }                                                
     });    
}); 

Решение будет декодировать HTML объекты в списке предложений

+0

Посмотрите, поможет ли это http://stackoverflow.com/a/34415506/4802649 – Phiter

ответ

0

Я исправил проблему на стороне сервера, завернув вывод ajax в метод php 'html_entity_decode'.

0

вы должны использовать:

пример:

var myData = ["Montérégie","Montréal - North Shore ","Montréal - South Shore"]; 
encodeURIComponent(JSON.stringify(myData)) 
+0

В вашем примере используется локальный массив, и я уже упоминал в описании, что автозаполнение работает в этом случае. Проблема в том, что специальные символы кодируются в html-объекты во время передачи http от сервера к клиенту. – ronline

Смежные вопросы