我一直在为这个项目苦苦挣扎几天,我希望能得到一些帮助。我有以下受保护的网址:
/item/code?comp=comp1
这将数据作为公司所有代码的json返回,格式如下:
[{'code':'test1','hdescrip':'Test code 1','type':'test type', etc.},and so on]
然后我在网页上有两个组件:
<table>
<tr>
<td width="79">Search Type</td>
<td>
<input type="checkbox" name="type_chk[]" id="type_chk" value="group" checked="checked"/>
<label for="type_chk">Group</label>
</td>
<td ><input type="checkbox" name="type_chk[]" id="type_chk" value="pick" checked="checked"/>
<label for="type_chk">Pick List</label></td>
<td ><input type="checkbox" name="type_chk[]" id="type_chk" value="item" checked="checked"/>
<label for="type_chk">Item</label></td>
<td><input type="checkbox" name="type_chk[]" id="type_chk" value="service" checked="checked"/>
<label for="type_chk">Service</label></td>
</tr>
<tr>
<td colspan="2"><input type="text" width="6" id="code" name="code" /><label for="code">Code</label></td>
<td colspan="3"><input type="text" width="75" id="hdescrip" name="hdescrip" /><label for="hdescrip">Description</label></td>
</tr>
</table>
考虑到代码部分有1000个可能具有类似代码和描述的项目,在我的数据库上调用和搜索部分匹配是很昂贵的。我想要做的是根据代码类型的选择加载数据库,并将其设置为表格中每个相应输入的自动完成源。
因此,如果他们点击组例如,源的新网址将是/item/code?comp=comp1&type_chk="pick,item,service
,应该缓存浏览器端 - 我看到人们使用var cache = {}
方法,但我不知道认为这是正确的。此缓存应该用作代码自动完成的源数据,然后将传递的数据的hdescrip组件与hdescrip输入文本进行匹配。
我知道如何将其设置为ajax调用,但我不想经常ping数据库。
此外,这是在谷歌应用引擎上,所以我无法创建静态文件。
有什么想法吗?
谢谢! 乔恩
答案 0 :(得分:1)
首先,您将需要一个服务器端代码,它将在页面的onLoad和onSelection上查询数据库。
您的算法:
- 连接数据库并执行查询。
- 返回数据集并从返回的数组中创建JSON字符串
- 将JSON保存到文件
- 查询表示返回的JSON文件或对象用于解析
- 重复#1 - #4 onSelect
醇>
#1和#3的代码如下所示:
var myJSON = {};
function getData(something){
$.ajax({
url: 'getDataFromDB.php',
type: 'GET',
data: 'parameter=something',
success: function(data) {
//called when successful
myJSON = data;
},
error: function(e) {
//called when there is an error
//console.log(e.message);
}
});
}
#2中的代码可能如下所示 - 如果使用PHP(当然可以使用其他语言)
$return_arr = array();
$something = $_GET['parameter'];
$fetch = mysql_query("SELECT * FROM table where column = $something");
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$row_array['id'] = $row['id'];
$row_array['col1'] = $row['col1'];
$row_array['col2'] = $row['col2'];
array_push($return_arr,$row_array);
}
$newJSON = json_encode($return_arr);
$destination = "myData.json";
file_put_contents($destination, minifyJson($newJSON));
然后#4中的代码可能会以这样的代码开头:
var myJSONData = {};
function getJSONData(){
$.getJSON( "myData.json", function( data ) {
console.log(data); //dump out the json object returned
myJSONData = data;
});
}
$('#someID').onClick(function(){
var selection = $('#someID').val();
getData(selection);
});
从那里你可以触发上面的函数onClick并通过查询字符串将参数传递给你的PHP文件,并使用$_GET['parameter']
来操纵从数据库返回的内容。您希望稍微调整上面的代码,但这应该给您一个大致的想法。祝你好运。