2013-06-16 17 views
7

का उपयोग करके परिणाम प्रदर्शित नहीं हो रहा है मुझे AJAX का उपयोग कर चयन 2 में परिणाम दिखाने में परेशानी हो रही है। यहाँ मेरी कोड है:चयन 2: AJAX

$(document).ready(function() { 
    $("#producto").select2({ 
     placeholder: 'Select a product', 
     formatResult: productFormatResult, 
     formatSelection: productFormatSelection, 
     dropdownClass: 'bigdrop', 
     escapeMarkup: function(m) { return m; }, 
     minimumInputLength:3, 
     ajax: { 
      url: 'http://foo.foo/listar.json', 
      dataType: 'jsonp', 
      data: function(term, page) { 
       return { 
        q: term 
       }; 
      }, 
      results: function(data, page) { 
       return {results:data}; 
      } 
     } 
    }); 


function productFormatResult(product) { 
    var html = "<table class='product-resultado'><tr>"; 
    if(product.img != undefined) { 
     html += "<td class='product-image'><img src='"+product.img+"'/></td>"; 
    } 
    html += "<td class='product-info'>"; 
    html += product.text + "<br />"; 
    html += product.precio_costo + " CRC <br />"; 
    html += "Existencias: " + product.existencias; 
    html += "</td></tr></table>"; 
    return html; 
} 

function productFormatSelection(product) { 
    return product.text; 
} 

Javascript कंसोल का उपयोग करना, मैं देख रहा हूँ अनुरोध उम्मीद JSON देता है: Javascript Console

[

{ "पाठ": "फू उत्पाद", "img": "#", "precio_costo": 45, "existencias": 0, "id": 2}

]

मुझे विश्वास है कि परिणाम: function(data, page) { ... } नहीं कहा जा रहा है, क्योंकि मैंने वहां एक चेतावनी दी और कुछ भी नहीं हुआ।

यह वहीं लटका हुआ है परिणाम के लिए इंतजार: Hangs waiting for results

उत्तर

11

देख मुझे लगता है कि आप jsonp के बजाय json लौट रहे हैं,

तो dataType: 'jsonp'dataType: 'json', या यहां तक ​​कि पूरी लाइन को हटाने के लिए लाइन बदलने का प्रयास करें।

मैंने पहले अनुभव किया है। json परिणाम इस मापदंड से बाहर की जांच की है, भले ही उम्मीद JSON वास्तव में दिया जाता है, बहुत शायद क्योंकि json और jsonp दो विभिन्न स्वरूपों

रूप में देखा जाता

पुनश्च: यह और अधिक एक टिप्पणी की तरह है, लेकिन मैं कर सकता हूँ के बाद से ' अपने प्रश्न पर टिप्पणी नहीं करें, कृपया मेरे साथ भालू

+0

थैंक्स। आपने आज अपना जीवन बचाया .... – Haritha

+0

आपका स्वागत है;) –

0

मुझे लगता है कि आप एक मूल्य के रूप ajax कॉल वापस नहीं लौट सकते, क्योंकि ajax कॉल asynchronous है।। इसके बजाय परिणाम खुद को संभाल लें। या नीचे दिए गए लिंक में दिए गए callback functions का उपयोग करें।

jQuery: Return data after ajax call success

+1

हालांकि यह कोई आसान अजाक्स कॉल नहीं है, यह एक प्लगइन है। या आप जानते हैं कि वास्तव में 'डेटा' और' परिणाम 'कॉलबैक कैसे काम करते हैं? –

+0

हां, दस्तावेज़ों से यह कहता है "यह ऑब्जेक्ट एजेक्स अनुरोधों को मैन्युअल रूप से एक फ़ंक्शन लिखने के लिए शॉर्टकट के रूप में कार्य करता है। अंतर्निर्मित फ़ंक्शन थ्रॉटलिंग और आउट-ऑफ-ऑर्डर प्रतिक्रियाओं को छोड़कर अधिक उन्नत सुविधाओं का समर्थन करता है।" - http://ivaynberg.github.io/select2/ – blaze

+0

@ फ़ेलिक्स क्लिंग या मैं जानता हूं कि कॉलबैक कैसे काम करता है, जैसे फ़ंक्शन पॉइंटर पास करना, ताकि फ़ंक्शन को पॉइंटर द्वारा बुलाया जा सके। साथ ही, मुझे पता है कि अजाक्स कॉल असीमित है और यह एक मूल्य वापस नहीं कर सकता है। और मैंने सोचा कि ओपी वहां लगी है क्योंकि अजाक्स अवधारणा हर जगह समान है। इसलिए, एक सुझाव दिया। तो, जवाब में मैंने 'मुझे लगता है' रखा। प्रवेश करने के लिए - मैं उस सटीक परिदृश्य को नहीं जानता जहां वह काम कर रहा है। क्या मैं जवाब में कहीं भी गलत हूं ?? –

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