我知道有一个更优雅/有效的方法(在php中我会使用foreach)但是使用jQuery我如何走JSON响应的var/val对并填充与字段名称相同id的表单字段在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); } }); }); }); });
这一切都很好,但我真的想避免所有的if/else语句,只是使用从getJSON方法返回的数据来确定哪些字段填充了什么值.什么是更清洁/更有效的方法?
- 尼古拉斯
您可以通过将$ .each替换为以下来删除所有"if"语句:
$.each(data, function(i, item){ $("#"+item.field).val(item.value); });
这有什么问题?
$.each(data, function(i, item) { $("#" + item.field).val(item.value); } });