Есть ли лучший способ справиться с этими данными JSON - PullRequest
0 голосов
/ 26 августа 2010

Я просто начинаю читать jQuery после того, как начинаю читать «Новичок ниндзя» Sitepoint, но, как всегда, мне остается только подумать, есть ли лучший способ написать код, который я придумал.Как оказалось, ответ почти всегда и решительный «да».

Все эти утверждения «если» кажутся нелепыми.Как я могу сделать это лучше?Какие функции я должен посмотреть, чтобы очистить это.Спасибо за помощь.

$('#user').change(function(){   
var user_id = $('#user').val();
$.ajax({
    type: 'POST',
    url: '../admin/billing/' + user_id,
    dataType: 'json',
    success: function(billing){
        //alert(billing.id);
        var name = '<a href="../user/view/' + user_id +'">' + billing.fname + ' ' + billing.lname + '</a><br />';
        if(billing.company_name != ''){
            var company_name = billing.company_name + '<br />';
        }else{
            var company_name = '';
        };
        if(billing.address_one != ''){
            var address_one = billing.address_one + '<br />';
        }else{
            var address_one = '';
        };
        if(billing.address_two != ''){
            var address_two = billing.address_two + '<br />';
        }else{
            var address_two = '';
        };
        var csz = billing.city + ', ' + billing.state + ' ' + billing.zip + '<br />';
        if(billing.phone != ''){
            var phone = billing.phone + '<br />';
        }else{
            var phone = '';
        };
        var data = name + company_name + address_one + address_two + csz + phone;
        $('#billing').empty().append(data);
        $('input:text').val('');
        $('#same-as-billing').attr('checked', false);
    }
});

});

Ответы [ 2 ]

0 голосов
/ 26 августа 2010

Вы можете перебрать объект json и создать строчку:

var data = [];
$.each(billing, function(key, value){
  if(value != "") data.push(value);
});
data = data.join("<br />");

Но это не сработает, если вам нужно больше, чем просто выводить значения объекта (просто пример) Здесь нечего оптимизировать. Вы можете пропустить только некоторые else s

var data = '<a href="../user/view/' + user_id +'">' + billing.fname + ' ' + billing.lname + '</a><br />';
if(billing.company_name != "") data+= billing.company_name+"<br />";
if(billing.address_one != "") data+= billing.address_one+"<br />";
data+= billing.city+", "+billing.state+" "+billing.zip+"<br />";
// and so on
0 голосов
/ 26 августа 2010

Небольшое улучшение, но поможет Javascript Micro Templating от Джона Ресига

Обычно вы хотите попытаться отрисовать все на стороне сервера, но если у вас нет выбора (данные поступают из внешнего домена), это полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...