我的代码的目标是使用文本字段来执行json查询请求以指定位置 它是一种基于快速搜索的文本,搜索与位置不同的特定网站
例如: 如果我输入www.calsolum / abc我希望它在网站calsolum上搜索3个json文件:
'a','ab','abc'最后一个是实际的json文件
我的索引文件看起来像这样
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<script src="jquery.js"></script>
<script src="script.js"></script>
<input type="text" id="location" onkeyup="myFunction()">
<body>
</body>
</html>
script.js看起来像这样
var myFunction = function(event) {
var payload = {location: $(this).val()};
var jqxhr = $.getJSON('/location', payload);
jqxhr.done(function(data) {
console.log(data);
});
};
// jQuery on DOM ready
$(function() {
$("#location").keyup(myFunction);
});
到目前为止,似乎我得到了正确的请求,但是从程序正在错误位置看错误 任何帮助将不胜感激。如果需要任何澄清,请不要犹豫。
EDIT2:所以我已经实现了建议的修改,并且在运行时出现了我的新错误
Uncaught TypeError: Cannot call method 'toLowerCase' of undefined
和
GET http://mobile.sheridanc.on.ca/location?location=http%3A%2F%2Fwww.sightlineinnovation.com%2Fsyst35288%2FAPI%2Fv1.0%2Fexchanges%2FWSA 404 (Not Found)
答案 0 :(得分:2)
这应该可以帮到你
var myFunction = function(event) {
var payload = {query: $(this).val()};
var jqxhr = $.getJSON('/path/to/location_query', payload);
jqxhr.done(function(data) {
console.log(data);
});
};
// jQuery on DOM ready
$(function() {
$("#location").keyup(myFunction);
});
每次用户在<input>
中输入内容时,都会生成getJSON
请求,其中包含以下有效内容{query: X}
,其中X
是输入的值。< / p>
答案 1 :(得分:1)
我建议通过jQuery绑定事件,这样你就有了获取事件数据的标准方法:
$("#location").on("keyup", myFunction);
另外,这样做,你必须摆脱输入元素上的onkeyup =“myFunction()”。
更改myFunction函数以接受参数:
function myFunction(event) { .... }
然后,您可以通过检查:
来检查按下了哪个键代码var keyCode = event.which; // example usage, returns a number indicating the keycode
希望这有助于您更接近您的需求
对于JSON - 您需要在事件处理程序内部调用$ .getJSON ,将其放在myFunction()的一侧只会在事件外运行一次。您可能希望每次事件触发时都运行它。
答案 2 :(得分:1)
从您的示例看,变量'x'在函数'myFunction'中关闭,您可能希望将变量移动到函数体中,即:
function myFunction(){
var x=document.getElementById("location");
//Moved getJSON inside 'myFunction' and added 'x' as second JSON param
$.getJSON('location', x, function(data) {
console.log(data);
});
}
答案 3 :(得分:1)
function myFunction(){
$.getJSON('location', {mylocation: $('#location').val()}, function(data) {
console.log(data);
});
}
每次用户输入一个单词时,都会发出
等请求[your_server]/location?mylocation=[what user typed on location field]
然后在你的服务器上,只需将“mylocation”作为查询字符串。