У меня есть текущая проблема с вводом, который я использую для поиска по множеству статей. Чтобы получить более подробную информацию, дело в том, что когда я вставляю текст с апострофом, я получаю следующую ошибку: Uncaught SyntaxError: Invalid or unexpected token
function set_id_article_popover(id, name){
$('#articles_search_input').val(id);
$('#articles_search_popover').val(name);
$('#articles_search_popover').blur();
$('[data-toggle="popover"]').each(function () {
$(this).popover('hide');
});
$('#articles_search_popover').val(name);
- это место, где я вставляю название статьи. $('#articles_search_input').val(id);
получает идентификатор статьи для поиска. Первый номер правильно вставлен в функцию, которая является идентификатором статьи set_id_article_popover(id, name)
<div class="item" id="articles_search_popover_container">
<i class="fa fa-newspaper-o placeholder_input_icotext-muted_light"></i>
<input name='name_busqueda'
autocomplete ='off' <?php if(!empty($value1))
{echo 'value="'.$value1.'"';} ?> type="text"
data-texts='1'
data-toggle="popover"
title="<i class='fa fa-exclamation-triangle'></i> <span class='text-muted'><?php echo __('Busca por especialidad o tratamiento');?></span>" data-lang="<?php echo $this->params['language'];?>"
data-search="articles"
id="articles_search_popover"
data-lang="<?php echo $lang; ?>"
class="form-control"
placeholder="<?php echo __('Buscar en artículos');?>">
<!-- Popover "Especialidad / Especialista" -->
<?php echo $this->element(
'/main_search/custom_autocomplete',
array(
'id' => 'articles_search_popover',
'headers' => false,
'specialties' => true,
'specialist'=> false,
'top_specialties' => false,
'treatments' => true,
'cols' => '1')
); ?>
</div>
Теперь я прикреплю вас к части контроллера, чтобы получить лучшую asp того, что происходит на заднем плане.
if(isset($this->request->query['name_busqueda'])
&& $this->request->query['name_busqueda'] != ""){
$word = $this->request->query['name_busqueda'];
}
if(isset($word) && $word != "" && !strpos($word, "-")){
$words_titulo = $word;
}
if(isset($articles_search) && $articles_search != ""){
$word_search = false;
//specialty or treatment is selected
$data = $this->request->query['articles_search'];
$data = explode("_",$data);
$tipo = $data[0];
if($tipo === 'specialty'){
//search by specalty
$specialty_id = $data[1];//id
if(!empty($this->params['language']) && $this->params['language'] != 'es'){
$name_field_sufix = '_' . $this->params['language'];
} else {
$name_field_sufix = '';
}
$specialty = $this->Specialization->find('first', array(
'fields' => array(
'name' . $name_field_sufix .' AS name'
),
'conditions' => array(
'id' => $specialty_id
)
));
if(!empty($specialty)) {
$words_titulo = $specialty['Specialization']['name'];
}
$options['conditions'] = array(
'ArticlesSpec.specialization_id' => $specialty_id
);
$this->set('specialty_id', $specialty_id);
}else{
//search by treatment
$treatment_id = $data[1];//id
if(!empty($this->params['language']) && $this->params['language'] != 'es'){
$name_field_sufix = '_' . $this->params['language'];
} else {
$name_field_sufix = '';
}
$treatment = $this->Treatment->find('first', array(
'fields' => array(
'name' . $name_field_sufix .' AS name'
),
'conditions' => array(
'id' => $treatment_id
)
));
$aux_join = array(
array(
'table' => 'td_articles_treatments',
'alias' => 'ArticlesTreat',
'type' => 'LEFT',
'conditions' => array(
'ArticlesTreat.article_id = Article.id',
)
),
array(
'table' => 'td_treatments',
'alias' => 'Treatments',
'type' => 'LEFT',
'conditions' => array(
'ArticlesTreat.treatment_id = Treatments.id',
),
)
);
$options['joins'] = array_merge($joins, $aux_join);
$campos_aux = ', ArticlesTreat.*, Treatments.*';
$options['conditions'] = array('ArticlesTreat.treatment_id' => $treatment_id);
if(!empty($treatment)) {
$words_titulo = $treatment['Treatment']['name'];
}
}
}
Знаете ли вы, есть ли возможность трансформировать апостроф с помощью Cake или было бы лучше сделать это через Javascript?
I попытался применить некоторые решения, заменив апостроф escape-символом и альтернативным символом кодирования, чтобы ввод читался более кратко, но я зашел в тупик. Любая помощь будет весьма признательна. Я прилагаю вам пару снимков экрана, чтобы я мог точно подсказать вам, что происходит.
На этом первом я начинаю писать в поисковой строке. Я заполняю его любой информацией, которую хочу.
На втором этапе, когда я выполняю поиск и нажимаю кнопку, появляется сообщение об ошибке: Uncaught SyntaxError: Invalid or unexpected token
Это то, что происходит на моем сервере разработки.
Спасибо