【问题标题】:json instant searchjson即时搜索
【发布时间】:2012-09-04 20:28:44
【问题描述】:

我正在尝试在 json 中创建即时搜索功能。代码看起来是对的,但肯定是行不通的。请大家看看并帮我修复它好吗?提前致谢。

http://jsfiddle.net/hMyr7/

【问题讨论】:

  • 我们需要的不仅仅是“这是我的代码,修复它”。它出什么问题了?什么不工作?
  • 你为什么使用async: false? AJAX 应该是异步的
  • 首先,您的 jsFiddle 包含 MooTools 而不是 jQuery。已修复:jsfiddle.net/hMyr7/7
  • response 是一个数组,您必须将其视为一个数组。 response[0].etc...
  • 另外,async: false 不会为 jsonp 请求做任何事情。

标签: jquery ajax json search


【解决方案1】:

我必须在你的 jsfiddle 上启用 jQuery...

一旦我这样做了,似乎服务器正在为 ajax 请求返回 500 服务器错误。

您需要调查服务器端响应,因为我们无法为您解决此问题。

【讨论】:

【解决方案2】:

您的 JSONP 代表您的 AJAX 调用接收的数据。 It 看起来像这样:

jsonCallback([{
    "id": 41,
    "title": "My city",
    "permalink": "http:\/\/mykolaiv.cityfacts.pro\/my-city\/",
    "content": "",
    "meta": {
        "ultimatum_layout": [""],
        "_edit_last": ["1"],
        "_edit_lock": ["1346784971:1"]
    },
    "excerpt": "",
    "date": "2012-09-04 18:26:50",
    "author": "oyeremchuk",
    "categories": [],
    "tags": [null]
}]);

最外面的节点是一个数组。要访问该数组中的第一个元素,您可以使用索引器:response[0]。那么问题是“你想从你的数据中得到什么?”

从你的 js 来看,你可能想要遍历整个响应,并从每个项目中提取 id、title 和 permalink。这应该为您的回调做:

    success: function(response) {
        $.each(response, function(i, item) {
            var data_id = item.id;
            var data_title = item.title;
            var data_viewCount = item.permalink;

            var final = "<div id='id'><div>" + data_id + "</div><div id='title'>" + data_title + "</div></div>";

            $("#results").append(final);

        });
    }

http://jsfiddle.net/hMyr7/15/.

【讨论】:

  • 非常感谢 RichardTowers。我只想在 json 中搜索数据并立即显示结果。
  • RichardTowers 当我输入 city 时,我得到了一些即时结果,但只有一个是正确的,其中有“city”这个词...有什么可以帮助我的吗?非常感谢您的帮助。
  • 您可能应该在服务器端对其进行整理。例如ci 返回multiple results。不过你could hack it on the client side。
【解决方案3】:

你检查过你的 JavaScript 控制台吗?

"Uncaught TypeError: Cannot read property 'items' of undefined" -- 因为您的 JSON 中没有 data 或 data.items。

尝试改变

if (response.data.items) {

到

if (response.data && response.data.items) {

它至少会优雅地失败。

http://jsfiddle.net/mblase75/hMyr7/2/

【讨论】:

  • 非常感谢 Blazemonger。请看一下我的json。 mykolaiv.cityfacts.pro/…你能帮帮我吗?
  • 嗨,Kevin,这是链接,抱歉发错了mykolaiv.cityfacts.pro/…
  • 那里没有“数据”,有或没有“data.items”。这需要在服务器端进行修复。
猜你喜欢
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
相关资源
最近更新 更多