2011-06-04 16 views
6

मैं एक दूरस्थ डेटा स्रोतअनुकूलित jQuery स्वत: पूर्ण परिणाम

$("input#searchbar").autocomplete({ 
     source: function(request, response) { 
      $.ajax({type: "post", 
      mode: "abort", 
      dataType: 'json', 
      url: 'index.php/ajax/autosuggest', 
      data: { term: $("#searchbar").val()}, 
      success: function(data) { 

       response(data); 
      } 
     }); 
    }, 
    select: function(e, ui) { 
     //Refresh pros 
     if (map){ 
      mouseUpOnTheMap(); 
     } 
    } 
}); 

यह वास्तव में अच्छी तरह से काम करता है के साथ jQuery स्वत: पूर्ण उपयोग कर रहा हूँ। जब मैं "ए" टाइप करता हूं तो उस सूची से शुरू होने वाली गतिविधि (डेटाबेस से प्राप्त) की एक सूची होती है। मैं क्या करना चाहता हूं यह परिणाम में एक कस्टम parametre (गतिविधि की आईडी) जोड़ें।

क्योंकि जब कोई उपयोगकर्ता किसी गतिविधि का चयन मैं करने के लिए "फिर से करते हैं" गतिविधि की आईडी प्राप्त करने के लिए एक एसक्यूएल खोज ... होगा

तो वहाँ एक तरह से गतिविधि आईडी शामिल करने के लिए है JSON वापस स्वत: पूर्ण से लौटा दिया?

धन्यवाद

+0

आप उस आईडी को कहां से सहेजेंगे? क्लाइंटसाइड या डीबी – zod

उत्तर

3

अपने index.php/ajax/autosuggest पेज रिटर्न JSON की एक सरणी "लेबल" और (तार की एक सरणी के बजाय) "मूल्य", jQuery यूआई स्वत: पूर्ण के दो कुंजी के साथ वस्तुओं हैं स्वत: पूर्ण सूची में प्रदर्शित करने के लिए "लेबल" कुंजी का उपयोग करने के साथ प्लगइन करें, लेकिन वास्तव में आपको जेएसओएन ऑब्जेक्ट दें जो चयनित ईवेंट में चुना गया था। फिर आप ऑब्जेक्ट के मान का संदर्भ दे सकते हैं।

$("input#searchbar").autocomplete({ 
     source: function(request, response) { 
      $.ajax({type: "post", 
      mode: "abort", 
      dataType: 'json', 
      url: 'index.php/ajax/autosuggest', 
      data: { term: $("#searchbar").val()}, 
      success: function(data) { 
       //data assumes [{label: "result 1", value: 1}, {label: "result 2", value: 2}]; 
       response(data); 
      } 
     }); 
    }, 
    select: function(e, ui) { 
     var selectedItem = ui.item; 
     var id = selectedItem.value; 
     var label = selectedItem.label; 

     //Refresh pros 
     if (map){ 
      mouseUpOnTheMap(); 
     } 
    } 
}); 

मैं thist परीक्षण नहीं किया, बस इसे मिली: http://www.petefreitag.com/item/756.cfm

+0

असल में, उस पृष्ठ को फिर से पढ़ने के बाद थोड़ा और काम शामिल हो सकता है। इस पर बंदूक कूदने के लिए मेरा बुरा .... यह जल्दी है। – WesleyJohnson

1

रास्ता वेस्ले बताया कि हम इस समय के साथ-साथ उपयोग कर रहे है।

दोनों label और हमारे JSON ऑब्जेक्ट हम हड़पने के लिए कि आईडी जिस तरह से हम चाहते हैं में इसे संभाल (हमारे मामले में, एक छिपा इनपुट में भंडारण) में सक्षम हैं में id लौटने, जबकि लेबल दिखाने के लिए इस्तेमाल किया जा रहा है के द्वारा हमारे जो उपयोगकर्ता रिकॉर्ड करते हैं उन्हें चुना जाता है।

बुनियादी उदाहरण: http://jsfiddle.net/NLK5p/4/

0

कौन सा डेटा स्रोत आप का उपयोग कर रहे हैं? मैं दृढ़ता से सुझाव देता हूं कि फ्रीबेस यह 12 लाख से अधिक आवाज़ों के भीतर एक नि: शुल्क डेटाबेस है और यह सबसे विविध क्षेत्रों (नौकरियां, खेल, अभिनेता, फिल्में या जो कुछ भी आप चाहते हैं) में स्वत: सुझाव (जेएस फ़ंक्शंस शामिल) के लिए एक वेब सेवाएं प्रदान करता है। .. हर कोई इसके बारे में नहीं जानता लेकिन Google ने पिछले साल परियोजना खरीदी (यह अभी भी उपलब्ध है और मुफ्त है) इसलिए यह डेटा स्रोतों के लिए एक आशाजनक वेब सेवा होनी चाहिए।

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