Well this is my solution and works flawless:
PHP:
<?php
ini_set('magic_quotes_gpc', false);
header('Content-type: text/plain');
//DB connection credentials
$dbhost = 'hostname';
$dbuser = 'database_username';
$dbpass = 'database_password';
$dbname = 'database_name';
// allow cross-browser acces
header('Access-Control-Allow-Origin: *');
// query SQL
$sql = "do your DB query SELECT what ever here";
//do our thingies withouth hacks (SQL Injection, etc)
try {
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbh->query("set names utf8");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->query($sql);
$json_export = $stmt->fetchAll(PDO::FETCH_OBJ);
$dbh = null;
// return JSON format DATA
echo '{"items":'. json_encode($json_export) .'}';
} catch(PDOException $e) {
// return error
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
?>
HTML LISTVIEW:
<div data-role="page" id="myPage"><div data-role="content" id="myContent">
//my HTML list tag
<ul data-role="listview" id="myList"></ul>
</div></div>
JAVASCRIPT
//trigger script on show page
$('#myPage').live('pageshow',function (event) {
//get our JSON data
$.getJSON('path_to_your_php_json_generator_file_declared_upper',function(data){
//append our JSON data to a variable
var json_entries = data.items;
//for each JSON data, append it to our list as one element
$.each(json_entries,function(index,entry){
$('#myList').append('<li><a href="#">' + entry.title + '</a></li>');
//assuming we have a field named "title" in JSON data
});
//refresh the list for layout (style) loading
$('#myList').listview('refresh');
});
});
And this is how you populate a list on jQuery Mobile with JSON data generated by a php file.
You can adapt this kind of script to every JSON interpreter in your jQuery code, even with parameters (id,category, etc)!
Hope it helps one way or another!
console.log()on thedataobject to see if it is the dom insertion or the json get that is having issues