2015-11-25 3 views
5

मैंने सफलतापूर्वक मोंगोसास्टिक को कॉन्फ़िगर किया है, मैंने खोज करने की कोशिश की है और यह ठीक काम कर रहा है, लेकिन जब यह सामने की ओर आता है तो मुझे वास्तव में यह सुनिश्चित नहीं होता कि इसे कैसे प्राप्त किया जाए, मैंने कई तरीकों से प्रयोग किया लेकिन वह नहीं आ सकता एक अच्छा समाधान के साथ।mongoosastic + AJAX के साथ तत्काल खोज कैसे करें?

यहां कोड है।

// 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 डेटा

enter image description here

मिलता तो बैकएंड पूरी तरह से काम कर रहा है होगा।

हालांकि जब यह 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); 
     } 
    }); 

    }); 

एचटीएमएल

<input type="text" class="form-control input-lg" id="search" name="search" placeholder="Search for part-time..." /> 



<div id="search_results"> 


    </div> 

मैं कैसे search_results को json परिणाम डालूँ?

उत्तर

3

आपको क्या करने की जरूरत है

    हर कुंजी स्ट्रोक पर
  1. है, इनपुट मूल्य
  2. अजाक्स के माध्यम से भेज अपने बैकएंड
  3. को JSON का उपयोग आप यहाँ हम सिर्फ सफलता पर वापस मिल (मिल प्रदर्शन "का शीर्षक: वेतन" div में यह)

तो अपने सामने के अंत कोड इस तरह दिखेगा:

$('#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); 
    } 
    }); 
}); 
+0

मान लें, मैं "केमिकल" की खोज करता हूं और मैंने "अभियंता" जोड़ने का फैसला किया है, यह दो बार एक ही डेटा वापस करेगा, मैं कैसे जांचूं कि यह एक डुप्लिकेट है या नहीं? –

+0

मेरा सुझाव है कि आप इसके लिए एक नया प्रश्न बनाएं। – Val

+0

करेंगे! एक पल प्रतीक्षा करें –

0

मैं अभी इस तरह के कुछ पर काम कर रहा हूं। सबसे पहले, यह लगता है कि आप अपने प्रारंभिक ajax अनुरोध में पैरामीटर मौजूद नहीं हैं, तो आपके नोड सर्वर में कोई भी जानकारी नहीं मिल रहा है: जब इन मुद्दों यह बहुत मददगार मुझे console.log का उपयोग करने के लिए किया गया है डिबगिंग

$('#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); 
    } 
}); 

}); 

() मेरी नोड सर्वर में आप इस तक पहुंच हो, तो कौन-सा डेटा यह वास्तव में हो रहा है देखने के लिए:

// 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); 
    }); 
}); 

लॉग बहुत स्पष्ट रूप से अपरिभाषित रिपोर्ट करेंगे या सही स्ट्रिंग है कि आप उम्मीद कर रहे हैं, ताकि जिस तरह से आप देख सकते हैं अपने पैरामीटर सही हैं

आप एक lso आपको नोड सर्वर पता और पोर्ट (जैसे एक सैनिटी चेक के रूप में) देखना चाहते हैं।मेरी ajax अनुरोध के लिए मैं क्योंकि मेरे सर्वर एक अलग बंदरगाह पर है बस मेरे प्रश्नों के सामने

url: "http://localhost:9200/api/search" 

डाल करने के लिए है

यहाँ आपके संदर्भ के लिए jQuery पद समारोह के बारे में कुछ और जानकारी है:

http://api.jquery.com/jquery.post/

उम्मीद है कि इससे मदद मिलती है!

संबंधित मुद्दे