elasticsearch,mongoosastic,Jquery,Ajax,Node.js,elasticsearch,Mongoosastic" /> elasticsearch,mongoosastic,Jquery,Ajax,Node.js,elasticsearch,Mongoosastic" />

Jquery 如何使用Mongoostic+;AJAX

Jquery 如何使用Mongoostic+;AJAX,jquery,ajax,node.js,elasticsearch,mongoosastic,Jquery,Ajax,Node.js,elasticsearch,Mongoosastic,我已经成功地配置了Mongoostic,我尝试了搜索,它工作得很好,但是当涉及到前端时,我不确定如何实现这一点,我尝试了很多方法,但没有找到一个好的解决方案 这是密码 // For the Search API router.post('/api/search/', function(req, res, next) { Job.search( { query_string: { query: req.body.searc

我已经成功地配置了Mongoostic,我尝试了搜索,它工作得很好,但是当涉及到前端时,我不确定如何实现这一点,我尝试了很多方法,但没有找到一个好的解决方案

这是密码

// For the Search API
    router.post('/api/search/', function(req, res, next) {
      Job.search(
        {
          query_string:
          { query: req.body.search }
        } , function(err, results) {
            if (err) return next(err);
            res.json(results);
        });
    });
因此,每当我搜索与“工程师”相关的内容时,我都会得到一个json数据

所以后端工作得很好

然而,当谈到jquery和ajax时,我总是收到错误的请求

逻辑是:无论何时插入某个内容,都要发布该内容并找到结果

这是前端jquery代码

  $('#search').keyup(function() {

    var search_term = $(this).val();


    $.ajax({
      type: "POST",
      url: "/api/search",
      success: function(){
        $('search_results').html(search_term);
      },
      error: function(data){
        alert('Error', data);
      }
    });

  });
HTML


如何将json结果插入到
搜索结果中?

您需要做的是

  • 在每个按键上,获取输入值
  • 通过Ajax将其发送到后端
  • 使用成功后返回的JSON(这里我们只在div中显示“title:salary”)
  • 因此,您的前端代码如下所示:

    $('#search').keyup(function() {
    
      // 1. grab the search term from the input field
      var search_term = $(this).val();
    
      // 2. send it to your back-end via ajax in the body 
      $.ajax({
        method: "POST",
        url: "/api/search",            // <-- your back-end endpoint
        data: "search=" + search_term  // <-- what you're sending
        dataType: "json",              // <-- what you're expecting back
        success: function(json){       // <-- do something with the JSON you get
          // 3. parse the JSON and display the results
          var res = json.hits.hits.map(function(hit) {
              return hit._source.title + ": " + hit._source.salary;
          });
          $('search_results').html(res.join("<br />"));
        },
        error: function(data){
          alert('Error', data);
        }
      });
    });
    
    $(“#搜索”).keyup(函数(){
    //1.从输入字段中获取搜索词
    var search_term=$(this.val();
    //2.在正文中通过ajax将其发送到后端
    $.ajax({
    方法:“张贴”,
    
    url:“/api/search”,//我现在正在处理类似的问题。首先,您的初始ajax请求中似乎缺少参数,因此您的节点服务器无法获取任何信息:

    $('#search').keyup(function() {
    //Perform the ajax request
    var search_term = $(this).val();
    $.ajax({
      type: "POST",
      url: "/api/search",
      data: {"search": search_term},
      success: function(data) {
         //Loop over all the data and output it, appending data to element
         //with a line break
         for(var i=0; i < data.hits.length; i++)
        $('search_results').append(data.hits[i]._source.title+'<br />');
      },
      error: function(data){
        alert('Error', data);
      }
    });
    
    });
    
    日志将非常清楚地报告未定义的或您期望的正确字符串,这样您就可以查看参数是否正确

    您可能还需要检查您的节点服务器地址和端口(就像一个健全的检查)

    url: "http://localhost:9200/api/search" 
    
    因为我的服务器位于不同的端口,所以在我的查询前面

    以下是有关jQuery post函数的更多信息,供您参考:


    希望这有帮助!

    比方说,我搜索“化学”并决定添加“工程师”,它将返回两次相同的数据,我如何检查它是否重复?我建议您为此创建一个新问题。可以!请稍等片刻,然后再看一看
    // For the Search API
    router.post('/api/search/', function(req, res, next) {
      console.log("%j", req.body.search)
      Job.search(
        {
          query_string:
          { query: req.body.search }
        } , function(err, results) {
            if (err) return next(err);
            res.json(results);
        });
    });
    
    url: "http://localhost:9200/api/search"