1. JavaScript / Говнокод #13738

    +154

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    /* Формируемый запрос через Ajax */
    function MakeSearchQuery() {
        searchQuery = "";
    
        if (SearchDataQuery.CityFrom != "") {
            searchQuery = "CityFrom=" + SearchDataQuery.CityFrom;
    
            if (SearchDataQuery.Country != "") {
                searchQuery += "&Country=" + SearchDataQuery.Country;
    
                if (SearchDataQuery.Station != "" && SearchDataQuery.Station != "&Station=") {
                    searchQuery += "&Station=" + SearchDataQuery.Station;
                }
                if (SearchDataQuery.Date != "" && SearchDataQuery.Date != "&Date=") {
                    searchQuery += "&Date=" + SearchDataQuery.Date;
                }
            }
        }
    }

    Формируемый Ajax запрос

    Запостил: sladkijBubaleh, 04 Сентября 2013

    Комментарии (9) RSS

    • видна рука сисярписта
      Ответить
    • > searchQuery = "";
      А чего минусуем? Получение аргументов и возврат значения функции через глобальные переменные в js - нормальное дело?
      Ответить
      • Я уж сперва подумал, что говнокод в забытом var. Пригляделся — а все гораздо интереснее.
        Ответить
      • > нормальное дело
        Вполне. Экономим 3 байта на var и 22 на return searchQuery, парсер будет быстрее работать.

        > SearchDataQuery.Station != "&Station="
        Откуда такой странный плейсхолдер?

        P.S. Когда уже народ запилит себе класс для построения URL'ов и перестанет страдать херней...
        Ответить
        • >P.S. Когда уже народ запилит себе класс для построения URL'ов и перестанет страдать херней...
          JSбляди соснули. Литералы для списков и хеш-массивов есть, а urlencode нет.
          Ответить
    • function encodeUrl ( urlFlow ) { 
       if ( !urlFlow || 
         Object.prototype.toString.call(urlFlow) !== '[object Object]' ) 
         throw new Error('Wrong type or absence of parameters'); 
       	 
        var array = [];
       
       for ( var name in urlFlow )  {
         if(!urlFlow.hasOwnProperty(name) ||
              typeof urlFlow[name] === 'function' ) continue;
         array.push( encodeURIComponent ( name ) + "=" + encodeURIComponent(
                  urlFlow[name].toString()));  
         };
          return array.join("&").replace(/%20/g, "+");	     
      };
      
      console.log(encodeUrl({name:'John', age: 13, from: 'New York', eq: '1=2})); 
      // name=John&age=13&from=New+York&eq=1%3D2
      Ответить

    Добавить комментарий