【问题标题】:search box result == Json result搜索框结果 == Json 结果
【发布时间】:2016-06-11 08:25:04
【问题描述】:

我有一个读取 JSON 文件的 Node.js 服务器,其中有很多信息。其中之一是一个人的 ID,我的 HTML 页面中有一个搜索框,我想为客户端设置一个 jquery 方法(需要 ajax)来查找用户在搜索框中输入的 ID 是否与JSON 中的 ID,如果我想返回有关该人的一些信息,假设是用户的姓名和用户名。

注意:我 100% 确定我的 server.js 文件有效。

请帮助我,我是 Jquery 的新手。

我到目前为止;

$(document).ready(function(){
    $("#id_of_the_search_box_button").click(function (any_function_variable_name) {
    $.ajax({
      type: 'GET',
      url: '/url_of_the_related_server_side',
      dataType: 'json'
      })
          .done(function(data){
              console.log(data);
              alert(JSON.stringify(data));

              data.forEach(function (any_function_variable_name) {

                if(any_function_variable_name.search_box_ID == any_function_variable_name.name_in_the_JSON_file_for_one_of_the_searched_ID){

                    $userElement = $("<li>").html("<strong>ID: </strong>" + any_function_variable_name.id); //id is defined in JSON and I was able to use in another part of the jquery
                    $userBlock = $("<ul>")
                        .append(
                            $("<li>").html("<strong>Name: </strong>" + any_function_variable_name.name) //name of the user
                        )
                        .append(
                            $userElement
                        )
                        .append(
                            $("<li>").html("<strong>User User Name: </strong>" + any_function_variable_name.userName)
                        );
                                                                  $any_function_variable_nameBlock.insertAfter("#search");
            }
            });
    });})}) 

注意:我不知道我是否可以正确关闭括号。

提前致谢!

【问题讨论】:

  • 你能提供你的json文件的结构吗?示例数据将有助于...
  • [{... "id" : 37595960858, "in_reply_to_screen_name": null, "user": { "id": 2384451, "id_str": "238678", "name": "Doga我”,“screen_name”:“IDoga”,...“id”:65739068412,“in_reply_to_screen_name”:null,“user”:{“id”:2878009,“id_str”:“235678”,“name”:“ Jon Doe", "user_name": "JD", ... }] 用户在搜索框中输入的 id 应该与不在用户中的 id 匹配。
  • P.S:我不使用快递
  • 只是为了确保我正确理解你的问题,[ { "id": 37595960858, "in_reply_to_screen_name": null, "user": { "id": 2384451, "id_str": "238678", "name": "Doga I", "screen_name": "IDoga" } }, { "id": 65739068412, "in_reply_to_screen_name": null, "user": { "id": 2878009, "id_str": "235678", "name": "Jon Doe", "user_name": "JD" } } ] 是你的结构,你想匹配{ id: ...} 而不是{ user: { id: ...} } ...对吗?

标签: javascript jquery json ajax node.js


【解决方案1】:

我猜你正在寻找如下所示的东西......

我没有进行 ajax 调用,而是使用静态数据编写如下...

HTML

<input id="searchBox" type="text" />
<button id="id_of_the_search_box_button">
Search
</button>

<ul>

</ul>

JS

var data = [
  {
    "id": 37595960858,
    "in_reply_to_screen_name": null,
    "user": {
      "id": 2384451,
      "id_str": "238678",
      "name": "Doga I",
      "screen_name": "IDoga"
    }
  },
  {
    "id": 65739068412,
    "in_reply_to_screen_name": null,
    "user": {
      "id": 2878009,
      "id_str": "235678",
      "name": "Jon Doe",
      "user_name": "JD"
    }
  }
];


$(document).ready(function(){
  $("#id_of_the_search_box_button").click(function (any_function_variable_name) {

    var searchText = parseInt($('#searchBox').val());


    data.forEach(function (any_function_variable_name) {

      if(any_function_variable_name.id === searchText){

        $("ul")
            .append('<li> <strong>ID: </strong>' + any_function_variable_name.user.id)
            .append('<li> <strong>User Name: </strong>' + any_function_variable_name.user.user_name)
            .append('<li> <strong>Name: </strong>' + any_function_variable_name.user.name)
            .append('<li> <strong>Screen Name: </strong>' + any_function_variable_name.user.screen_name);

      } //End if

    }); //End forEach

  });
}); 

这会让你的 ajax 调用像这样......

$(document).ready(function(){
  $("#id_of_the_search_box_button").click(function (any_function_variable_name) {
    $.ajax({
      type: 'GET',
      url: '/url_of_the_related_server_side',
      dataType: 'json'
    })
    .done(function(data){


      var searchText = parseInt($('#searchBox').val());


      data.forEach(function (any_function_variable_name) {

        if(any_function_variable_name.id === searchText){

          $("ul")
            .append('<li> <strong>ID: </strong>' + any_function_variable_name.user.id)
            .append('<li> <strong>User Name: </strong>' + any_function_variable_name.user.user_name)
            .append('<li> <strong>Name: </strong>' + any_function_variable_name.user.name)
            .append('<li> <strong>Screen Name: </strong>' + any_function_variable_name.user.screen_name);

        } //End if

      }); //End forEach



    });
  });
});

下面是提琴手

https://jsfiddle.net/rrtbz4bo/7/

在搜索框中输入37595960858并点击搜索。

更新:如果 /find/id?id=... api 返回类似的数据,则直接调用它

{
    "id": 37595960858,
    "in_reply_to_screen_name": null,
    "user": {
      "id": 2384451,
      "id_str": "238678",
      "name": "Doga I",
      "screen_name": "IDoga"
    }
  }

那么以下应该可以工作。

$(document).ready(function(){
  $("#id_of_the_search_box_button").click(function (any_function_variable_name) {
    $.ajax({
      type: 'GET',
      //Or whatever your URL structure is
      url: 'http://127.0.0.1:5230/find/id?Id=' + $('#searchBox').val(),
      dataType: 'json'
    })
    .done(function(data){
      $("ul")
      .append('<li> <strong>ID: </strong>' + data.user.id)
      .append('<li> <strong>User Name: </strong>' + data.user.user_name)
      .append('<li> <strong>Name: </strong>' + data.user.name)
      .append('<li> <strong>Screen Name: </strong>' + data.user.screen_name);
    });
  });
});

如果这不起作用,请发布一个提琴手,我会尝试使它起作用。

希望这会有所帮助...

【讨论】:

  • 没用,我觉得问题比我想象的要大。感谢您的尝试。如果你不介意你可以写一个通用结构,因为当我使用 127.0.0.1:5230/find/id?... 并写写 id ......我在终端/控制台上看到了正确的答案(我有一个 console.log())。问题是我的 jquery ajax 应该看到搜索框值将该值与 JSON 中的值进行比较,如果它们匹配,则需要返回该人的信息。再次感谢
  • 然后删除 forEach 循环,并将您的 ajax url 设置为 .... url: ' 127.0.0.1:5230/find/id?Id=' + $('#searchBox').val() 即直接调用带id的api。
  • 如果你愿意也可以直接使用api.jquery.com/jquery.getjson而不是$.post
  • 我可以再问你一个问题吗?
  • 当然...如果它不相关,您也可以发布另一个问题。 :)
猜你喜欢
  • 2011-08-27
  • 2020-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多