2016-03-03 2 views
0

Я пытаюсь добавить значения к элементу select html с помощью Jquery/Ajax. Значения возвращаются скриптом PHP, который я вызываю с помощью ajax.Сделать большее значение как 0 из массива и просмотреть и игнорировать другое значение, которое содержит 0

код Ajax:

<script type = "text/javascript"> 
    $(document).ready(function(){ 
     $('#fds_categories').change(function() { 
      var template_id = $(this).val(); 

      $.ajax({ 
       type: "POST", 
       data: { 
        'username' : '<?php echo $user->username; ?>', 
        'categorie_id' : template_id 
       }, 
       url: "ajax/fds_template_ajax.php", 
       success: function(data){ 
        $('#fds_price').empty(); 
        $.each($.parseJSON(data), function(index, element) { 
         $('#fds_price').append(

          $('<option data-icon="man"></option>').val(element.id).html(element.name + ' Price: ' + element.p + ' Zbucks') 
         ); 
        }); 
       } 
      }); 
     }); 
    }); 
</script> 

Часть кода PHP:

$response['template'][$key] = array(
    "name" => (string)$template['name'], 
    "id" => (string)$template['id'], 
    "active" => (string)$template['active'], 
    "assetUrl" => (string)$template['assetUrl'], 
    "consumable" => (string)$template['consumable'], 
    "new" => (string)$template['new'], 
    "pb" => (string)$template['pb'], 
    "p" => (string)$template['p'], 
    "zch" => (string)$template['zch'] 
); 

Моя проблема заключается в следующем:

Возвращаемый массив действительно содержит два различных значения цены: рь = Премиум валюты, р = Базовая валюта. Но только 1 значение фактически заполнено значением.

Например:

Пункт А:

Pb = 0

р = 1000

Скриншот:https://gyazo.com/63757fcadbeb1172e8b045d545ff8805


Вопрос:

Как бы я мог добавить значение> 0 в предварительный просмотр и игнорировать значение = 0?

Например:

Пункт B стоит р = 100 и Рb = 0, теперь я хочу р, чтобы показать. Пункт C стоит p = 0 и pb = 10, теперь я хочу, чтобы pb отображался.

ответ

1

Пусть оба свойства всегда имеют значение, 0 или число больше 0. Вы можете использовать:

$('<option data-icon="man"></option>').val(element.id).html(element.name + ' Price: ' + Math.max(element.p, element.pb) + ' Zbucks') 
0

Вы могли бы сделать простое условие:

if(parseInt(element.p)==0) 
    $('<option data-icon="man"></option>').val(element.id).html(element.name + ' Price: ' + element.bp + ' Zbucks'); 
else 
    $('<option data-icon="man"></option>').val(element.id).html(element.name + ' Price: ' + element.p + ' Zbucks'); 

Вы также могли бы использовать в качестве (element.bp || element.p) @Rayon упоминалось в комментариях:

$('<option data-icon="man"></option>').val(element.id).html(element.name + ' Price: ' + (element.bp || element.p) + ' Zbucks'); 

ПРИМЕЧАНИЕ: Это условие не распространяется на случай, когда оба равны 0.

Надеюсь, это поможет.

+1

Может быть '(element.bp || element.p)'. Примечание: OP анализирует все свойства как 'string', поэтому' '0" 'не будет проверяться как true, используя' element.p == 0' – Rayon

+0

Спасибо @RayonDabre за ваше предложение, обновил мой ответ. –

+0

Вы пропустили условие 'if' mate..' (string)' будет выдавать '0' как' "0" ' – Rayon

Смежные вопросы