2009-03-11 14 views
6

मुझे पता है कि ऐसा करने का एक और अधिक सुरुचिपूर्ण/कुशल तरीका है (PHP में मैं foreach का उपयोग करता हूं) लेकिन jQuery के साथ मैं JSON प्रतिक्रिया के var/val जोड़े कैसे चल सकता हूं और उसी आईडी के साथ फ़ॉर्म फ़ील्ड को पॉप्युलेट कर सकता हूं JSON प्रतिक्रिया में फ़ील्ड नाम?"चलना" JSON प्रतिक्रिया और फॉर्म फ़ील्ड पॉप्युलेट - अधिक कुशल दृष्टिकोण?

यहाँ मेरी JSON प्रतिक्रिया है:

[{"field":"svendor_name","value":"Vendor Name Inc."},{"field":"svendor_addr1","value":"1234 Vendor Lane."},{"field":"svendor_addr2","value":"Suite 100"},{"field":"svendor_city" 
,"value":"Vendorville"},{"field":"svendor_state","value":"CA"},{"field":"svendor_zip","value":"90210"},{"field" 
:"svendor_phone","value":"800-555-1234"}] 

यहाँ है प्रपत्र को आबाद करने के लिए मेरे jQuery कोड:

$(document).ready(function() 
{ 
    $('#svendor_name').bind("change", function() 
    { 
     var svendor = $("#svendor_name").val(); 
     svendor = svendor.replace(/&/g, '*'); 
     $.getJSON("get_vendors.php?sname=" + svendor, 
     function(data) 
     { 
      $.each(data, 
       function(i, item) 
       { 
        if(item.field == "svendor_name") 
        { 
         $("#svendor_name").val(item.value); 
        } 
        else if(item.field == "svendor_addr1") 
        { 
         $("#svendor_addr1").val(item.value); 
        } 
        else if(item.field == "svendor_addr2") 
        { 
         $("#svendor_addr2").val(item.value); 
        } 
        else if(item.field == "svendor_city") 
        { 
         $("#svendor_city").val(item.value); 
        } 
        else if(item.field == "svendor_state") 
        { 
         $("#svendor_state").val(item.value); 
        } 
        else if(item.field == "svendor_zip") 
        { 
         $("#svendor_zip").val(item.value); 
        } 
        else if(item.field == "svendor_phone") 
        { 
         $("#svendor_phone").val(item.value); 
        } 
        else if(item.field == "svendor_id") 
        { 
         $("#svendor_id").val(item.value); 
        } 
      }); 
     }); 
    }); 
}); 

सब ठीक है और अच्छा काम करता है लेकिन मैं वास्तव में से बचने के लिए सभी अगर/चाहते हैं यही कारण है कि अन्यथा बयान और GetJSON विधि से वापस आने वाले डेटा का उपयोग यह निर्धारित करने के लिए करें कि कौन से फ़ील्ड मूल्यों के साथ आते हैं। इसके लिए एक क्लीनर/अधिक प्रभावी दृष्टिकोण क्या है?

- निकोलस

उत्तर

21

आप इस के साथ अपने $ .प्रत्येक की जगह "अगर" बयान सब से छुटकारा पा सकते:

$.each(data, function(i, item){ 
    $("#"+item.field).val(item.value); 
}); 
+0

बहुत बढ़िया प्रतिक्रिया का उपयोग करें। पूरी तरह से काम करता है और वही है जो मैं खोज रहा था। धन्यवाद। –

+8

यह तब तक ठीक काम करता है जब तक कि सभी फ़ील्ड इनपुट फ़ील्ड हों। लेकिन कॉम्बो बॉक्स, चेकबॉक्स और रेडियो बटन के बारे में क्या? क्या कोई अच्छी प्लगइन नहीं है जो इसका ख्याल रखती है? – bart

+0

मैं बार्ट के समान चीज़ सोच रहा हूं। –

7

इसमें क्या गलत है?

$.each(data, 
    function(i, item) { 
     $("#" + item.field).val(item.value); 
    } 
}); 
+1

चेकबॉक्स और रेडियो बटन –

0

मैंने देखा है कि तत्व आईडी आपकी JSON में खेतों, कैसे के बारे में के रूप में ही कर रहे हैं:

$(document).ready(function() { 
    $('#svendor_name').bind("change", function() 
    { 
     var svendor = $("#svendor_name").val(); 
     svendor = svendor.replace(/&/g, '*'); 
     $.getJSON("get_vendors.php?sname=" + svendor, 
     function(data) { 
       $.each(data, function(i, item) { 
        $('#' + item.field).val(item.value); 
       }); 
     }); 
    }); 
}); 
3

अपने परिणामों को इस तरह दिखाई देता है:

[{"field1":"value1","field2":"value2"}] 

तो कोड द्वारा प्रदान की सेब और चेतन काम करता है

$.each(data, function(i, item){ 
    $("#"+item.field).val(item.value); 
}); 

अपने परिणामों को इस तरह दिखाई देता है:

{"field1":"value1","field2":"value2"} 

फिर इस कोड

$.each(data, function(field, value){ 
    $("#"+field).val(value); 
}); 
+0

के लिए अच्छा व्यवहार नहीं करता है प्रत्यक्ष क्षेत्रों पर एक उत्तर के लिए बहुत अच्छा है –

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