0

我的代码目标是使用文本字段执行 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) 
4

4 回答 4

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输入的值是。

于 2013-07-31T02:18:20.003 回答
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() 之外只会在事件之外运行一次。您可能希望它在每次事件触发时运行。

于 2013-07-31T01:59:23.607 回答
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);
    });
}
于 2013-07-31T02:05:16.420 回答
1
function myFunction(){
    $.getJSON('location', {mylocation: $('#location').val()}, function(data) {
        console.log(data);
    });
}

每次用户输入一个单词,它都会发出一个请求,例如

[your_server]/location?mylocation=[what user typed on location field]

然后在您的服务器上,将“mylocation”作为查询字符串。

于 2013-07-31T02:18:33.643 回答