2016-05-15 93 views
0

我试图将用户重定向到专门的搜索页面,当他们键入搜索框并单击从我的网站上的任何页面发送。是否有可能与JS实现:基于搜索输入 与JS的搜索功能

  • 重定向用户到专门的搜索页面

    1. 使用Ajax请求提取数据
    2. 基于来自Ajax请求
    数据建立新的搜索页面

    我遇到的问题是JS需要在同一个函数的两个不同的页面上执行,我不知道如何正确地构造它。

  • +0

    嗨,欢迎来到SO!请阅读[this](http://stackoverflow.com/help/how-to-ask)文章,了解如何提出更好的问题,这将帮助人们给你更好的答案。特别是,添加已经尝试过的代码将有助于人们理解您的问题,并更好地理解语境。 –

    回答

    0

    这真的很容易。假设这是你生成的HTML

    <form...> 
    ... 
    <div class="search"> 
    <input type="text" id="txtSearch" name="search" /> 
    <input type="submit" id="btnSearch" value="Search" /> 
    </div> 
    ... 
    </form> 
    ... 
    <script> 
    window.onload = function(){ 
        function searchRedir(){ 
         var searchKey = document.getElementById('txtSearch').value; 
         window.location = '/<searchPageUrl>?search=' + escape(searchKey); 
         return false; 
        } 
        document.getElementById('txtSearch').onchange = 
        document.getElementById('btnSearch').onclick = searchRedir; 
    
    } 
    

    提交按钮btnSearch在情况下用户浏览器中添加不支持javascript(或支持被关闭)。在这种情况下,您必须将请求重定向到服务器端的搜索页面。代码可能会有所不同,这取决于服务器端技术。

    0

    是的。有可能的。

    下面是谷歌为每个的:

    1.-“如何做(使用Javascript /您所使用的框架)一个Ajax请求”,如果你不使用任何框架,我会建议使用superagent来简化您的请求。但是,这是没有必要的,你可以用普通的JavaScript做阿贾克斯GET要求是这样的(学分You might not need jQuery):

    var request = new XMLHttpRequest(); 
    request.open('GET', '/my/url', true); 
    
    request.onload = function() { 
        if (this.status >= 200 && this.status < 400) { 
        // Success! 
        var resp = this.response; 
        } else { 
        // We reached our target server, but it returned an error 
    
        } 
    }; 
    
    request.onerror = function() { 
        // There was a connection error of some sort 
    }; 
    
    request.send(); 
    

    2:“如何使用重定向用户到URL(使用Javascript /任何框架您正在使用)“并将其与3”如何设置URL参数(使用Javascript /任何框架)“

    3.-”如何访问URL参数(JavaScript /任何框架,你是使用)“

    如果你Google那些3你应该能够做你需要做的。

    0

    当用户开始打字时,将用户重定向到新页面看起来像是令人困惑的行为。我建议您在用户点击搜索框时将用户重定向到您的搜索页面,或者您可以用链接替换框。如果你需要来自请求页面的参数,你可以将它们附加到你的url,比如myexamplesite/search?myparam = Thethingineed

    +0

    我只是在他们点击输入或搜索后重定向他们,问题是正确计时,所以更新页面的JS运行在新加载的搜索页面上,而不是搜索框填充的页面 – compsci45000

    +0

    啊。好的。也许可以在页面加载完成后在搜索页面上运行单独的脚本?你可以随时在url中获取你需要的数据。根据JS运行和页面加载速度,似乎对我来说很容易出错。 – JsTinker