2017-02-13 3 views
1

Я использую плагин jQuery autoComplete https://goodies.pixabay.com/jquery/auto-complete/demo.html, и я пытаюсь использовать их запрос ajax, к сожалению, у меня есть ошибка.Uncaught TypeError. Item.replace не является функцией, autoComplete plugin

Это говорит

item.replace не является функцией в object.renderItem

$.fn.autoComplete.defaults = { 
    source: 0, 
    minChars: 3, 
    delay: 150, 
    cache: 1, 
    menuClass: '', 
    renderItem: function (item, search){ 
     // escape special characters 
     search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); 
     var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi"); 
     return '<div class="autocomplete-suggestion" data-val="' + item + '">' + item.replace(re, "<b>$1</b>") + '</div>'; 
    }, 
    onSelect: function(e, term, item){} 
}; 

Вот мой код

$('.to_msg').autoComplete({ 
    source: function(term, response){ 
     $.getJSON('ajax/auto_complete_ajax.php', { q: term }, 
     function(data){ 
      response(data); 
     }); 
    } 
}); 

И мой PHP ответ

$recipient = $_GET['q']; 
$a_json = array(); 
$a_json_row = array(); 


//restrict the store 
$query_filter = $db->query("SELECT * from master_data.user_account where Name like '%$recipient%'"); 
while($result_filter = $query_filter->whileFetch()){ 
    $name = htmlentities(stripcslashes($result_filter['Name'])); 
    $user_id = htmlentities(stripcslashes($result_filter['user_id']));  
    $a_json_row['user_id'] = $user_id; 
    $a_json_row['value'] = $name; 
    $a_json_row['label'] = $name; 
    array_push($a_json, $a_json_row); 
} 

echo json_encode($a_json); 
flush(); 

Вот выход JSON

[ 
    {"user_id":"5","value":"Melde Feliciano ","label":"Melde Feliciano "}, 
    {"user_id":"46","value":"Melanie Charlton ","label":"Melanie Charlton "} 
] 
+0

Ваша ошибка в том, что '.replace' не является функцией, вы ищете' str_replace() '? – Timmy

+0

Упс, im mix php с JS, извиняюсь за его 2am lol :) – Timmy

+1

[var.replace не является функцией] (http://stackoverflow.com/questions/4775206/var-replace-is-not-a-function) Посмотрите на этот вопрос, чтобы узнать, поможет ли он вам! – Timmy

ответ

2

item в renderItem(item, search) является объектом. Попробуйте заменить item.replace() на item.label.replace().

$.fn.autoComplete.defaults = { 
    source: 0, 
    minChars: 3, 
    delay: 150, 
    cache: 1, 
    menuClass: '', 
    renderItem: function (item, search){ 
     // escape special characters 
     search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); 
     var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi"); 
     return '<div class="autocomplete-suggestion" data-val="' + item.value + '">' + item.label.replace(re, "<b>$1</b>") + '</div>'; 
    }, 
    onSelect: function(e, term, item){} 
}; 
Смежные вопросы