Я использую виджет автозаполнения JQuery с помощью JSON для анализа данных db, но не работает. Есть много вопросов, подобных моим, но я не смог найти решение. Мой PHP файл с JSON разобранного это:Автозаполнение JQuery dataSource с JSON
Эта ошибка появляется в консоли браузера, в первой строке PHP:
Uncaught SyntaxError: Unexpected token <
Файл PHP peliculas.php
<?php
function makeSqlConnection()
{
$SERVIDOR_MYSQL = "localhost";
$BASE_DATOS = "db";
$USUARIO_MYSQL = "root";
$PASSWORD_MYSQL = "";
$con = mysql_connect($SERVIDOR_MYSQL,$USUARIO_MYSQL,$PASSWORD_MYSQL) or die(mysql_error());
mysql_select_db($BASE_DATOS,$con) or die(mysql_error());
return $con;
}
function disconnectSqlConnection($con)
{
mysql_close($con);
}
$con = makeSqlConnection();
$term = trim(strip_tags($_GET['term']));
$result = mysql_query("SELECT PYS_STR, PYS_TITULO FROM pys WHERE PYS_STR LIKE '%".$term."%';", $con);
$informacion = array();
while($row = mysql_fetch_assoc($result))
{
array_push($informacion, array('label' => $row['PYS_TITULO'], 'value' => $row['PYS_STR']));
}
echo json_encode($informacion);
?>
JSON возвращает этот : [{"label":"Reservoir Dogs","value":"reservoirdogs"},{"label":"Machete","value":"machete"},{"label":"Wall Street","value":"wallstreet"},{"label":"Django Desencadenado","value":"djangodesencadenado"},{"label":"The Wire","value":"thewire"},{"label":"This Is England '88","value":"thisisengland88"}]
Это мой сценарий:
$(function() {
$("#peliculas").autocomplete({
source: function(request, response) {
$.ajax({
url: "/bundles/pys/php/peliculas.php",
dataType: "json",
data: {terms: request.term},
success: function(data) {
response($.map(data, function(item) {
return {
label: item.label,
value: item.value
}
}));
}
});
},
minLength: 2,
select: function(event, ui) {
log(ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
},
open: function() {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close: function() {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
}
});
});
и это мой HTML-код:
<div class="ui-widget">
<label for="peliculas">Peliculas: </label>
<input id="peliculas" />
</div>
<div class="ui-widget" style="margin-top: 2em; font-family: Arial;">
Result:
<div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
</div>
РЕШЕНИЕ
Я решил эту ошибку. Проблема была в местоположении peliculas.php
; Symfony2 обнаруживал этот файл php, такой как js-файл, в каталоге /resource/public/js
. Когда я изменил файл php в новый каталог, и я обновил параметр url
в скрипте, он отлично работал.
Вторая проблема была в параметре data
:
data: {terms: request.term},
, когда я заменил terms
с term
фильтрация работала хорошо.
Что вы имеете в виду под "не работает." Есть ли ошибки на странице? –
@AndrewWhitaker JSON возвращает штраф, а JS очень похож на пример автозаполнения JQuery. Когда я пишу в ярлык, ничего не появляется. Я не знаю, что не так, возможно, в '$ .ajax (...' или, возможно, чего-то не хватает в PHP ... Спасибо !!! –