hi leute,
bin wieder mal bei meiner musiksammlung ;-)
nun möchte ich ein suchfeld einfügen (jquerymobile autocomplete ajax) und habe dabei ein problem die Begriffe mit ajax, JS bereitzustellen.
vorlage unter: JQmobile - Remote autocomplete
also html
<ul id="autocomplete" data-role="listview" data-inset="true" data-filter="true" data-filter-placeholder="Find a song..." data-filter-theme="d"></ul>
und JS
$( document ).on( "pageinit", "#foo", function() {
$( "#autocomplete" ).on( "listviewbeforefilter", function ( e, data ) {
var $ul = $( this ),
$input = $( data.input ),
value = $input.val(),
html = "";
$ul.html( "" );
if ( value && value.length > 2 ) {
$ul.html( "<li><div class='ui-loader'><span class='ui-icon ui-icon-loading'></span></div></li>" );
$ul.listview( "refresh" );
$.ajax({
//url: "http://gd.geobytes.com/AutoCompleteCity",
url: "autocomplete.php",
//dataType: "jsonp",
dataType: "json",
//crossDomain: true,
data: {
q: $input.val()
}
})
.then( function ( response ) {
$.each( response, function ( i, val ) {
html += "<li>" + val + "</li>";
});
$ul.html( html );
$ul.listview( "refresh" );
$ul.trigger( "updatelayout");
});
}
});
});
und source mit php liefert -> array und mit
echo json_encode($json);
(auszug von ca. 10.000 songs einmal interp. vorne andermal songname)
[{"value":"+44 - Baby Come On","label":"+44 - Baby Come On _ 0"},{"value":"Baby Come On - +44","label":"Baby Come On - +44 _ 1"},{"value":"10 CC - Dreadlock holiday","label":"10 CC - Dreadlock holiday _ 2"},{"value":"Dreadlock holiday - 10 CC","label":"Dreadlock holiday - 10 CC _ 3"},{"value":"10 Ft. Ganja Plant - Invincible Butcher","label":"10 Ft. Ganja Plant - Invincible Butcher _ 4"},{"value":"Invincible Butcher - 10 Ft. Ganja Plant","label":"Invincible Butcher - 10 Ft. Ganja Plant _ 5"},{"value":"10 Ft. Ganja Plant - The Challenge","label":"10 Ft. Ganja Plant - The Challenge _ 6"},{"value":"The Challenge - 10 Ft. Ganja Plant","label":"The Challenge - 10 Ft. Ganja Plant _ 7"},{"value":"10,000 Maniacs - These Are Days","label":"10,000 Maniacs - These Are Days _ 8"},{"value":"These Are Days - 10,000 Maniacs","label":"These Are Days - 10,000 Maniacs _ 9"}]
hab auch schon probiert:
~~~javascript
$.each( response, function ( label, value ) {
html += "<li>" + value + "</li>";
});
als ergebnis bei eingabe ins textfeld kommt etliche male:
[object Object]
[object Object]
usw
die begriffe hab ich als var's - sind also mit php frei formatierbar.
wie funktioniert's, was kann ich machen?
gibt's auch die Möglichkeit mit text, csv etc die Begriffe zu übergeben?
grüße aus LA
ralphi