сохранить результат в базу данных из автозаполнения JavaScript - PullRequest
0 голосов
/ 12 мая 2018

У меня есть этот код, чтобы получить результаты, выбранные пользователем, и отправить его в базу данных MySQL.Есть ли лучший способ сделать это, чем использовать switch и вводить каждый случай вручную, как это?

Мой текущий код:

select: function(event, ui) {
  //alert(ui);
  var selectedCase = false;
  var selectedItem = '';

  var item = ui.item;
  switch (item.type) {
    case 'brands':
      selectedCase = true;
      selectedItem = base_url + 'brand/' + item.BrandUniqueName;
      window.location.href = base_url + 'brand/' + item.BrandUniqueName;

      break;
    case 'categories':
      selectedCase = true;
      selectedItem = base_url + 'categories/' + item.CategoryUniquename;
      window.location.href =
        base_url + 'categories/' + item.CategoryUniquename;

      break;
    case "categoryBrand":
      selectedCase = true;
      selectedItem = base_url + 'brand/' + item.BrandUniqueName + '? 
      category = '+item.CategoryUniquename;
      window.location.href = base_url + 'brand/' + item.BrandUniqueName + '? 
      category = '+item.CategoryUniquename;

      break;
    case 'offercategory':
      selectedCase = true;
      selectedItem = base_url + 'offercategory/' + item.OfferCategory;
      window.location.href =
        base_url + 'offercategory/' + item.OfferCategory;

      break;
    case 'vendorOfferCategory':
      selectedCase = true;
      selectedItem = base_url + 'offers/' + item.UniqueName + '? 
      category = '+item.OfferCategory;
      window.location.href = base_url + 'offers/' + item.UniqueName + '? 
      category = '+item.OfferCategory;

      break;
    case 'vendor':
      selectedCase = true;
      selectedItem = base_url + 'offers/' + item.VendorUniqueName;
      window.location.href = base_url + 'offers/' + item.VendorUniqueName;

      break;
    case 'offers':
      selectedCase = true;
      selectedItem = base_url + 'offers/' + item.UniqueName;
      window.location.href = base_url + 'offers/' + item.UniqueName;

      break;
    case 'vendorcategory':
      selectedCase = true;
      selectedItem = base_url + 'topcategories/' + item.UniqueName;
      window.location.href = base_url + 'topcategories/' + item.UniqueName;

      break;
    case 'vendors':
      selectedCase = true;
      selectedItem = base_url + 'offers/' + item.UniqueName;
      window.location.href = base_url + 'offers/' + item.UniqueName;

      break;
    case 'products':
      selectedCase = true;
      selectedItem = base_url + 'products/' + item.InternalLink;
      window.location.href = base_url + 'products/' + item.InternalLink;

      break;
    case "Not Available":
      //$("#autocomplete").val('');
      break;

  }
  if (selectedCase == true) {
    // alert(selectedItem);
    var rslt = selectedItem;
    this.saveResult();
  }
  //$("#project-id").val(ui.item.email);                    
  return false;
},

1 Ответ

0 голосов
/ 12 мая 2018

возможно, вы можете использовать такую ​​хэш-карту,

 var map = {brands: 
              {
              url:'brand/',
              attribute:'InternalLink'
              },
          categoryBrand: 
              {
               url:'brand/',
               attribute:'InternalLink',
               extraPar: '?category=',
               extraAttr: 'CategoryUniquename'
              }
         };

и используйте их так:

selectedCase = true;
  selectedItem = base_url + map[item.type]['url'] 
                 + item[map[item.type]['attribute']] 
                 + (map[item.type]['extraPar'] ? (map[item.type]['extraPar']+item[map[item.type]['extraAttr']]) : '');
  window.location.href = base_url + map[item.type]['url'] 
                 + item[map[item.type]['attribute']] 
                 + (map[item.type]['extraPar'] ? (map[item.type]['extraPar']+item[map[item.type]['extraAttr']]) : '');

, а для случая тип не в ваших случаях, вы можете просто проверить, прежде чем доступ

if(map[item.type]){
 // do what you want
} else {
 // type is not defined
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...