[JavaScript, AJAX] Задай вопрос, получи ответ

Discussion in 'PHP' started by banned, 9 Jun 2007.

Thread Status:
Not open for further replies.
  1. Melfis

    Melfis Elder - Старейшина

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    true - булевая переменная, такая же как все. А значит это то, что если в массиве будет находится не true (любое другое), то равенства не будет, так как сравнивается по типу и значению. Когда ты используешь конструкцию if (checkboxArray ), то жс приводит к булевуму типу в true или false это значение. В результате, если у тебя значение ar != false, undefined, NaN, null, 0, равенство будет выполняться.
     
    1 person likes this.
  2. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    == - оператор нестрогой равности.
    По типу и значению будет идти сравнение при использовании ===

    Как написал LStr1ke - оба варианта верны.
     
    #3762 FindeR, 5 Jul 2013
    Last edited: 5 Jul 2013
  3. Melfis

    Melfis Elder - Старейшина

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    Да, не так выразился.
    Стоит почитать то, что написал я выше постом подробнее. Об этой проблеме как раз и описывает
    А всё потому, что:
    if (checkboxArray === true) - будет соответствовать только при checkboxArray = true
    if (checkboxArray) - будет соответствовать значениям != false, undefined, NaN, null, 0
    Поэтому эти два типа if не равны.
     
  4. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Сори, я не заметил в посте LStr1ke оператор ===, непонятно, как он туда затесался.
    Изначально человек спрашивал


    Собсно, ответ на это - оба варианты верны.
     
    1 person likes this.
  5. tmp

    tmp Banned

    Joined:
    10 Mar 2005
    Messages:
    417
    Likes Received:
    32
    Reputations:
    1
    Пацаны, всем спасибо! Помогли, разъяснили что к чему!

    На основании этого нашел еще свою, по видимому, ошибку.
    checkboxArray - возвращал на самом деле еще не значение, а еще объект (или как это правильно называется в JS я хз).
    В общем доступ к значению был в checkboxArray.value

    Теперь все работает как часы!
    Всем спасибо! :)
     
  6. 1profit

    1profit New Member

    Joined:
    29 Jun 2013
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Каким кодом можно отследить ботов на сайте? То есть занимаюсь арбитражем, лью через тизерную сеть на свою прокладку (слежу через ГА), заинтересовал вопрос отлова ботов.. Стандартные решения с невидимой точкой, невидимой ссылкой не подойдут, т.к уже не актуально по моему..Боты умные стали
    Зарание спасибо.
    Если не сложно напишите в личку поподробней)(т.к я вообще "Нуль" в написании скриптов и прочего)
     
  7. tmp

    tmp Banned

    Joined:
    10 Mar 2005
    Messages:
    417
    Likes Received:
    32
    Reputations:
    1
    Подскажите , плиз, как заставить правильно выполнятся этот код в IE?
    В ФФвыполняется правильно. После клика вначале отправляется запрос, а потом обновляется картинка. В IE же - все наоборот! Вначале обновляется картинка (соответственно проверочный код меняется), а потом отправляется запрос.

    PHP:
    <script>
            $(
    document).ready(function(){
                $(
    '#submit').click(function(){
                    $.
    post("sendmail.php", $("#contact").serialize(),  function(response) {
                        $(
    '#success').html(response);
                    });
                     var 
    now = new Date();
            
    res ='img.php?' +  now.getTime();
            $(
    "#captcha_img").attr({ srcres }); 
                    return 
    false;
                });
              
            });
        
    </script>
     
  8. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    PHP:
    var now = new Date();
    res ='img.php?' +  now.getTime();
    $(
    "#captcha_img").attr({ srcres });  
    Этот код в функцию приема ответа переместите, иначе это все будет зависть не от IE, а от удачи...
     
    2 people like this.
  9. tmp

    tmp Banned

    Joined:
    10 Mar 2005
    Messages:
    417
    Likes Received:
    32
    Reputations:
    1
    Спасибо! Отлично все заработало. Я думал наоборот нужно после функции приема. :)
     
  10. PX379

    PX379 New Member

    Joined:
    1 Jun 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте. Помогите переделать данный скрипт только наверное сначала объясню что должно получиться в итоге.

    Надо сделать форму которая показана на рисунке ниже. То-есть, пользователь должен ввести данные о фильме, нажать кнопу "Сгенерировать", а скрипт должен показать код с bb-тегами.
    [​IMG]

    В принципе, есть уже почти готовый скрипт, но никак не получается сделать так, что бы в поле вывода выводились название с тегами и та информация, которую заполняет пользователь.

    JavaScript
    Code:
    <script type="text/javascript"> 
    <!--
    wait_visibility('serp', 0);function create(form) {
    form.story.value="";
    if (form.input1.value != "") {
    form.story.value +="<title>" + form.input1.value + "</title>\n";
    }
    if (form.textfield1.value != "") {
    form.story.value +="<meta name=\"Submission\" content=\"" + form.textfield1.value + "\">\n";
    }
    if (form.input2.value != "") {
    form.story.value +="<meta name=\"Author\" content=\"" +
    form.input2.value + "\">\n";
    }
    if (form.input4.value != "") {
    form.story.value +="<meta name=\"Description\" content=\"" +
    form.input4.value + "\">\n";
    }
    if (form.input5.value != "") {
    form.story.value +="<meta name=\"Keywords\" content=\"" +
    form.input5.value + "\">\n";
    }
    if (form.input6.value != "") {
    form.story.value +="<meta name=\"Copyright\" content=\"" +
    form.input6.value + "\">\n";
    }
    if (form.input8.value != "") {
    form.story.value +="<meta name=\"Robots\" content=\"" +
    form.input8.options[form.input8.selectedIndex].value + "\">\n";
    }
    if (form.input9.value != "") {
    form.story.value +="<meta http-equiv=\"content-type\" content=\"" +
    form.input9.value + "\">\n";
    }}
    //--> 
    </script>
    
    HTML
    Code:
               <form action="">
                  <input type="hidden" name="textfield1" size="28" value="">
                  <table border="0" cellpadding="2" cellspacing="0" width="500" id="table01">
                    <tbody><tr>
                      <td>
                        <i>Заголовок (Title):</i>
     
                      </td>
                      <td align="right">
                        <input type="text" name="input1" size="41" class="norm">
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <i>Автор:</i>
     
                      </td>
                      <td align="right">
                        <input type="text" name="input2" size="41" class="norm">
                      </td>
                    </tr>
    
    
    
                    <tr>
                      <td>
                        <i>Описание:</i>
     
                      </td>
                      <td align="right">
                        <input type="text" name="input4" size="41" class="norm">
                      </td>
                    </tr>
    
    
    
                    <tr>
                      <td>
                        <i>Ключевые слова :</i>
     
                      </td>
                      <td align="right">
                        <input type="text" name="input5" size="41" class="norm">
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <i>CopyRight :</i>
     
                      </td>
                      <td align="right">
                        <input type="text" name="input6" size="41" class="norm">
                      </td>
                    </tr>
    
    
    
    
                    <tr>
                      <td>
                        <i>Инфа для поисковиков:</i>
     
                      </td>
                      <td align="right">
                        <select name="input8" size="1">
                          <option value="All" selected="">
                            Индексировать и исследовать всё
                          </option>
                          <option value="None">
                            Не обрабатывать
                          </option>
     
                          <option value="Index">
     
                            Индексировать
                          </option>
                          <option value="No Index">
                            Не индексировать
                          </option>
                          <option value="Follow">
                            Исследовать
                          </option>
                          <option value="No Follow">
     
                            Не исследовать
                          </option>
     
                        </select>
        </td>
                    </tr>
    
    
    <tr>
    <td>Кодировка:</td>
    <td align="right"><select name="input9" size="1">
    <option selected="selected" value="text/html; charset=Windows-1251">Кириллица (Windows)</option>
    <option value="text/html; charset=koi8-r">Кириллица
    (KOI8-R)</option>
    <option value="text/html; charset=cp866">Кириллица (DOS)</option>
    <option value="text/html; charset=utf-8">Многоязыковая
    UTF-8</option>
    <option value="text/html; charset=Windows-1252">Западноевропейский
    (Windows)</option>
    </select>
    </td>
    </tr>
    </tbody></table>
    
    <table border="0" cellpadding="0" cellspacing="0" width="496" id="table02">
    <tbody><tr>
    <td>
    
    
                    <input type="button" value="Создать МЕТА-теги" onclick="create(this.form)" class="buttonNormal">
                    <input type="reset" value="Очистить все поля" class="buttonNormal">
    </td>
    </tr>
    <tr>
    <td> 
    <textarea name="story" rows="10" cols="56"></textarea>
    
    </td>
    </tr>
    </tbody></table>
                </form>
     
    </div>
    
     
  11. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Почти готовый скрипт? :) Тут само ТЗ - почти готовый скрипт. А приведённый код не особо имеет отношение к заданию.

    Code:
    <html>
    <head>
    <script>
    window.onload = function()
    {
    	var form = document.forms['film'];
    	form.onsubmit = function()
    	{
    		this.elements['result'].value = '[b]Название[/b] ' + this.elements['name'].value +
    										'\n[b]Страна[/b] ' + this.elements['name'].value +
    										'\n[b]Год выпуска[/b] ' + this.elements['name'].value;
    		return false;
    	}
    }
    </script>
    </head>
    <body>
    <form method="post" action="" name="film">
    <table>
    <tr>
    <td>Название</td>
    <td><input type="text" name="name" value="" /></td>
    </tr>
    <tr>
    <td>Страна</td>
    <td><input type="text" name="country" value="" /></td>
    </tr>
    <tr>
    <td>Год выпуска</td>
    <td><input type="text" name="year" value="" /></td>
    </tr>
    <tr>
    <td colspan="2">
    <textarea name="result"></textarea>
    <br />
    <input type="submit" value="Сгенерировать" />
    </td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    
     
  12. PX379

    PX379 New Member

    Joined:
    1 Jun 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Но это более похожий который удалось найти)
     
  13. tmp

    tmp Banned

    Joined:
    10 Mar 2005
    Messages:
    417
    Likes Received:
    32
    Reputations:
    1
    Помогите советом, плиз, как сделать в jquery (или хотя бы JS) следующее:

    Открывается форма с динамическими input в модальном окне (iframe).
    Теперь я передаю данные из input POSTом другому скрипту для последующего заполнения формы (форма уже другая, но с заполненными полями данными взятыми из предыдущей формы). Естественно новая форма (с полученными данными из первой формы) должна быть как новая страница. Но черт возьми!!!! Ни как не могу понять - как мне теперь открыть в модальном окне (ifarme) с полученными данными новую страницу????
     
  14. Melfis

    Melfis Elder - Старейшина

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    Сессию используй. Но если честно, то я не понял что надо. Откуда-то взялась вторая форма. Передаёшь данные постом другому скрипту(пхп что ли, на сервере). Айфреймы открываешь на одном домене?
     
  15. tmp

    tmp Banned

    Joined:
    10 Mar 2005
    Messages:
    417
    Likes Received:
    32
    Reputations:
    1
    :) ну да. В общем с этой проблемой разобрался. В инете так и не нашел решения (мож в бологе написать? :)). Использовал

    PHP:
    $('body').empty(); 
     $(
    'body').append('<div id="fuck">aaaaaaa</div>');
    Теперь возник еще один вопрос:

    Хочу теперь чтоб плавно пропадала первая форма и плавно появлялась вторая. Стандартный скрипт (который есть в инете для смены страниц) меняет что то в ссылке. Видимо потому что рассчитан на тег "а" а у меня отправляются данные и смена контента происходит по тегу button
    Короче:
    попробовал юзать просто в функции fadeOut и fadeIn
    Но почему то и
    fadeOut и fadeIn
    выполняются уже после запроса и получения передаваемых данных.

    вот код

    PHP:
    // ORDER
          
    $('#order').click(function(){
          var 
    ans = [];
          
    ans.push($('#from').attr('value'));
          
    ans.push($('#to').attr('value'));
             $.
    ajax({
              
    type'POST',
              
    url'res.php',
              
    data: {ans ans},
              
    success: function(data) {
              $(
    'body').fadeOut('slow');
              $(
    'body').empty();
               $(
    'body').append('<div id="fuck">aaaaaaa</div>').fadeIn('100000');
              $(
    '#fuck').html(data);
              },
              
    error:  function(xhrstr){
                    
    alert('Fucking error: ' xhr.responseCode);
                }
            });
          
          }) 
    // END ORDER
    По идее $('body').fadeOut('slow'); должна выполнится до $('body').empty();
    то есть когда еще жив первый элемент body.
    Но получается - вначале очищается элемент, потом получаем данные и записываем в body новые данные, а уже потом происходит плавное исчезновение и появление. ппц какой то :)
     
  16. tmp

    tmp Banned

    Joined:
    10 Mar 2005
    Messages:
    417
    Likes Received:
    32
    Reputations:
    1
    Мля.... что то получилось. Подскажите пожалуйста - корректен такой код? А то что то слишком сложно получается для элементарных операций:

    PHP:
    // ORDER
          
    $('#order').click(function(){
          var 
    ans = [];
          
    ans.push($('#from').attr('value'));
          
    ans.push($('#to').attr('value'));
          $(
    'body').fadeOut('1000', function(){$('body').empty();});
          $.
    ajax({
              
    type'POST',
              
    url'res.php',
              
    data: {ans ans},
              
    //async:false,
              
    success: function(data) {
                $(
    'body').fadeIn('1000', function() {$('body').append('<div id="fuck">aaaaaaa</div>');
              $(
    '#fuck').html(data);});
              },
              
    error:  function(xhrstr){
                    
    alert('Возникла ошибка: ' xhr.responseCode);
                }
            });
          
          }) 
    // END ORDER

    В ФФ работает ОК! НА Экслоере еще не проверил. уже завтра, а то глаза вылазят уже.

    PS
    Бля, нет. Теперь наоборот. не работает почему то fadeIn
     
    #3776 tmp, 1 Aug 2013
    Last edited: 1 Aug 2013
  17. Melfis

    Melfis Elder - Старейшина

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    1. я бы на всякий случай(ну прям прям на всякий) заменил в fadeIn и fadeOut время со строки на число '1000' -> 1000, стринга там предназначена для алиасов типа 'slow'.
    2. операции по анимации происходят в отдельном псевдопотоке, т.е. ты запускаешь fadeOut и тут же у тебя происходит аякс запрос. Анимация fadeOut ещё не успевает завершиться, а ты уже почти сразу (время отправки запроса и ответа с сервера) начинаешь делать fadeIn. Вот тут как раз слабое звено.
    Code:
     var body = $('body');
     
     $('#order').click(function(){
    	var ans = [],
    		data = null;
    
    	ans.push($('#from').attr('value'));
    	ans.push($('#to').attr('value'));
    	
    	body.fadeOut(1000, function(){
    		this.empty();
    		// если запрос от сервера пришёл раньше окончания анимации,
    		// то можно показывать сразу бади и инфу в нём
    		if (data) {
    			draw(data);
    		}
    	});
    	
    	$.ajax({ 
    		type: 'POST', 
    		url: 'res.php', 
    		data: {ans : ans}, 
    		//async:false, 
    		success: function(data) {
    			// если запрос пришёл позже, чем анимация(fadeOut) завершилась,
    			// то вызываем показ инфы отсюда
    			if (body.is(':hidden')) {
    				draw(data);
    			}
    		}, 
    		error:  function(xhr, str){ 
    			alert('Возникла ошибка: ' + xhr.responseCode); 
    		} 
    	}); 
    });
    
    function draw(data) {
    	var fuckContainer = $('<div></div>');
    	fuckContainer
    		.attr('id', 'fuck')
    		.html(data);
    
    	body
    		.append(fuckContainer)
    		.fadeIn(1000);
    }
    Такие замутки с проверками направлены на то, чтобы по возможности было меньше визуальных тормозов. Если у человека норм всё с инетом и сервер не тупит, то сразу как скроется бади, оно начнёт появляться уже с другой инфы.

    Зы. не тестил, но вроде нигде не накосячил
     
    1 person likes this.
  18. tmp

    tmp Banned

    Joined:
    10 Mar 2005
    Messages:
    417
    Likes Received:
    32
    Reputations:
    1
    Melfis
    Огромное спасибо за код и за подробное комментирование! Только сейчас вышел в онлайн, сегодня целый день мотался по городу. Времени не было затестить :) завтра обязательно протестирую и отпишусь!
    Еще раз - огромное спасибо!
     
  19. tmp

    tmp Banned

    Joined:
    10 Mar 2005
    Messages:
    417
    Likes Received:
    32
    Reputations:
    1
    не захотел код работать.

    1. почему то при this.empty(); элемент вообще не очищался. Поменял на body.empty
    очистился.
    2. при условии if (body.is(':hidden')) вообще не выполнялось условие. Поменял просто на на if(data) -заработало, но:
    3. работало как то странно, то данные полчал, то нет. то есть работало через 3-5 раз. Но и работало тоже не совсем как надо (как, уже забыл :))

    Но поступил проще! )))

    Свой код оставил почти не тронутым. Только добавил css #fuck{display:none;} и во втором файле (к которому происходит ПОСТ запрос) добавил просто
    Вроде работает! ))) Только в ИЕ почему то fadeOut нормально не работает. ща по этому поводу почитаю.
    Спасибо за помощь! :)

    UPD
    Не , даже не так. Оставил первый файл без изменения.
    Во втором прописал:

    PHP:
    $(document).ready(function(){ 
    $(
    "#fuck").css("display""none");
    $(
    '#fuck').fadeIn(1000);
    Думаю так бедет правильнее :)
     
    #3779 tmp, 2 Aug 2013
    Last edited: 2 Aug 2013
  20. f0rt1

    f0rt1 Banned

    Joined:
    14 Sep 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Всем привет!
    Делаю загрузку mp3 файлов через HTML5 с помощь FormData(), XMLHttpRequest.
    Возникла такая проблема, что не все mp3 файлы доходят на сторону php, например 1.mp3 загрузится, а 2.mp3 нет. На стороне PHP получаю данные через $_FILES, когда сделал тест print_r($_FILES), то ответ был пустой.
    В чем может быть проблема ? Спасибо.
     
Thread Status:
Not open for further replies.