JQuery tokeninput: [Error] TypeError: undefined не является объектом (оценка ‘term.replace’)

я использую http://loopj.com/jquery-tokeninput/ потому что мне нужно было связать окно выбора непосредственно с БД.

Я написал PHP-скрипт, который принимает GET-запрос, как описано на его GitHub:

<?php
require_once('sondaggio.php');
# Connect to the database
$s = new Sondaggio();
# Perform the query
$query = sprintf("SELECT id, nome from Regioni WHERE nome LIKE '%s%' LIMIT 5", $s->getRealEscapeString($_GET["q"]));
$arr = array();
$arr = $s->readFromDB($query);
# JSON-encode the response
$json_response = json_encode($arr);
# Return the response
echo $json_response;
?>

Класс Sondaggio конструктор:

function __construct(){
$this->conn = new mysqli($this->host, $this->user, $this->password, $this->database);
// Check connection
if ($this->conn->connect_error) {
exit("Connection failed: " . $this->conn->connect_error);
}
}

Функция readFromDB ($ query):

public function readFromDB($query){
$arr = array();
$result = $this->conn->query($query);
if ($result->num_rows > 0){
while($row = $result->fetch_object()) {
$arr[] = $row;
}
}
return $arr;
}

Все проверено и работает хорошо, вывод правильный, следуя его документации. Однако я получаю сообщение об ошибке, когда начинаю вводить в поле выбора:

[Error] TypeError: undefined is not an object (evaluating 'term.replace')
regexp_escape (jquery.tokeninput.js:828)
find_value_and_highlight_term (jquery.tokeninput.js:844:88)
(anonymous function) (jquery.tokeninput.js:899)
each (jquery.min.js:2:11781)
populateDropdown (jquery.tokeninput.js:896)
success (jquery.tokeninput.js:1031)
o (jquery.min.js:2:14739)
fireWith (jquery.min.js:2:15504)
w (jquery.min.js:4:12484)
d (jquery.min.js:4:18320)

Так что я застрял с этой ошибкой, и я не знаю, почему она появляется, пожалуйста, помогите мне. Спасибо

РЕДАКТИРОВАТЬ:

Вывод var_dump ($ json_response) (с … php? q = t):

string(75) "[{"id":"16","nome":"Toscana\r"},{"id":"17","nome":"Trentino-Alto Adige\r"}]"

0

Решение

Решено, просто ошибка.
В соответствии с http://loopj.com/jquery-tokeninput/ документация:

Ваш скрипт должен выводить результаты поиска JSON в следующем формате:

[
{"id":"856","name":"House"},
{"id":"1035","name":"Desperate Housewives"},
...
]

Здесь поля «id» и «name».
Вместо этого мой запрос запросил у БД «id» и «nome»:

$query = sprintf("SELECT id, nome from...

Поэтому я просто обновил запрос следующим образом:

$query = sprintf("SELECT id, nome as name from...

Теперь все работает правильно!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]