【问题标题】:Why is search functionality not working on this page?为什么搜索功能在此页面上不起作用?
【发布时间】:2010-05-31 21:04:15
【问题描述】:

我们为客户提供微型网站内容。我们的内容被注入到另一个开发人员提供的包装器中。

为了交付我们的内容,我们托管了包装器和内容。用户可以在

http://fundcentre.newireland.ie/(尝试搜索“bloxham”)

对于不属于我们的其他内容,其他开发人员托管一个类似(尽管略有不同)的包装器并交付内容。用户在此处访问:

http://www.newireland.ie/(尝试搜索“bloxham”)

包装器包含一个搜索框,它对我们不起作用,但对其他开发人员有用。我用 FireBug 查看了网络流量,但似乎当我从我们托管的包装器中进行搜索时,我收到了“407 代理访问被拒绝”错误。我的猜测是他们的代理存在问题,即搜索是从托管在其代理范围之外的页面进行的。

还建议页面上存在阻止搜索执行的 javascript 错误,但我看不到任何内容。另外,如果是这种情况,我认为我不会出现代理错误。

虽然我不太了解这些东西,所以请有更多经验的人看看,也许可以为我解释一下?谢谢。

【问题讨论】:

    标签: asp.net javascript proxy firebug


    【解决方案1】:

    问题似乎是搜索框和它旁边的按钮(放大镜)都导致整个页面表单提交他们尝试将页面 URL 设置为搜索网址。当您在搜索字段中键入并点击“Enter”时,将提交包裹在整个页面周围的外部表单。单击放大镜时,它尝试加载搜索结果,但由于它是一个图像按钮,因此单击会导致提交外部表单。

    我不确定如何最好地修复它,部分原因是我认为应该抛弃整个页面设计。但是,如果您坚持使用它,可能可以通过放弃按钮上的内联 Javascript(因为它无论如何都不起作用)然后用它自己的包装搜索内容来使其工作<form> 定向到搜索页面。在<form> 中包含<form> 是不好的魔力,但在将整个页面放在<form> 开头的设计中很难避免。

    或者,您可以尝试处理搜索输入上的按键事件以检测“Enter”,并让该处理程序和按钮上的代码都返回“false”以停止外部表单提交。

    edit - 至于为什么它在其他网站上有效,在我看来,外部形式确实是某种“搜索”功能,因为它们没有点击处理程序完全在搜索按钮上,所以它所要做的就是提交外部表单。

    再次编辑——另外,我从未见过“代理”问题。如果我首先修复按钮上的内联 Javascript 以使其以 ; return false 结尾,那么从您的页面搜索对我来说很好。这实际上可能就是您需要做的所有事情。

    【讨论】:

    • 感谢 Pointy,您对“return false”的建议似乎是解决方案。我同意你关于被抛弃的设计。在设计阶段的早期做出了很多我没有意见的不明智的决定。这有点丢脸。然而,值得一提的是,这个问题似乎出在其他开发人员身上。感谢您帮助指出这一点。
    • 我也去过!祝你好运等。
    【解决方案2】:

    标签的操作指向不同的脚本可能是个问题。一个指向“Home.aspx”,另一个指向“/Default.aspx”。 这两个链接位于不同的子域中,因此您可能想更改子域的操作,使其包含操作的完整位置(例如“http://www.newireland.ie/Default.aspx”)

    【讨论】:

    • 然而,搜索本身实际上是与这两个中的 任何一个不同的 URL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2023-04-09
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    相关资源
    最近更新 更多