无法复制Jquery Mobile Autocomplete演示

时间:2015-11-20 19:08:19

标签: javascript php jquery jquery-mobile autocomplete

我正在尝试使用自己的远程数据源复制此演示:

http://demos.jquerymobile.com/1.4.5/listview-autocomplete-remote/

我的HTML页面与演示完全相同,但有一点不同:

url: "http://localhost/sample.php",

这是我的虚拟远程数据源sample.php

<?php

$a = array('apple', 'mango');

echo json_encode($a);

这里可能缺少什么?由于我的虚拟数据只是一个简单的数组,我希望它会自动完成"apple", "mango"但不会出现任何内容。

修改:我尝试了以下操作,但仍然无效:

<?php

$a = array("apple", "mango");

header('Content-Type: application/javascript; charset=utf-8');

echo $_GET['callback'].'('.json_encode($a).');';

1 个答案:

答案 0 :(得分:1)

“查看来源”实际上就在于此。由于下一个JS $( document ).on( "pagecreate", "#myPage", function() {期望#myPage,因此HTML中缺少一行。因此,HTML应该是这样的:

<body>
    <!-- this div was missing --> 
    <div data-role="page"  id="myPage">
        <h3>Cities worldwide</h3>
        <p>After you enter <strong>at least three characters</strong> the autocomplete function will show all possible matches.</p>
        <form class="ui-filterable">
            <input id="autocomplete-input" data-type="search" placeholder="Find a city...">
        </form>
        <ul id="autocomplete" data-role="listview" data-inset="true" data-filter="true" data-input="#autocomplete-input"></ul>  
    </div>
</body>

因此,如果您添加缺少的div <div data-role="page" id="myPage">并使用下一个PHP代码,那么一切都会正常工作:

<?php
    header('Content-Type: application/javascript; charset=utf-8');
    $callback = $_GET['callback'];
    $q = $_GET['q'];
    $json = json_encode(['apple', 'mango']);
    echo "$callback($json);";
?>

以防万一,这些是我在测试中使用的两个文件: