За последние 24 часа нас посетил 17751 программист и 1681 робот. Сейчас ищут 976 программистов ...

Как соединить PHP и JavaScript

Тема в разделе "JavaScript и AJAX", создана пользователем SaM1001, 5 авг 2014.

  1. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    У меня есть чуток яваскрипта:
    Код (Text):
    1. var fArtNr = $("<input id=\"ref\" type=\"text\" name=\"ref\" size=\"6\" class=\"ui-autocomplete-input\" value=\"'.$selected.'\"/>&nbsp;/&nbsp;");
    который выводит поле при действии addButton

    И есть аналогичный, которым бы я хотел пользоваться в php:
    Код (Text):
    1. $formarticle->select_article($object->art_nr,\'ref\',array(\'selectarnr_id\',\'state_id\'),6);
    от так же выводит инпут... как бы мне его засунуть правильно под
    Код (Text):
    1. var fArtNr = $();
    Чёт у меня самого ничего не получается...
    хотя не пишите ответ, дайте ссыль куда глянуть, чтобы на будущее не задавал глупых вопросов

    Спасибо всем заранее
     
  2. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Попробовал вот так:
    Код (Text):
    1. var fArtNr = $("<?php $formarticle->select_article($object->art_nr,\'ref\',array(\'selectarnr_id\',\'state_id\'),6);?>&nbsp;/&nbsp;");
    но не обрабатывается php... что может быть не так?
    на выходе выдаёт мне:
    Код (Text):
    1. <!--? $formarticle--->
    2. select_article($object-&gt;art_nr,'ref',array('selectarnr_id','state_id'),6); ?>;
    не врублюсь, почему $formarticle закрываются в коммент...
    объясните русским языком, что я не так делаю
     
  3. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    А у вас вообще там PHP в принципе может отработать?
    Сделайте alert('<?=(2+3)?>'). Если выводится не 5 - значит, у вас просто не работает php на этой странице, скорее всего, потому что расширение файла не php
     
  4. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Не, с этим всё в порядке, файл .php и обрабатывает пыху отлично, вот только из под яваскрипта не хочет выдать мне его. На вопрос, почему через яваскрипт, а не напрямую: потому, что этим хочу создавать ещё одно дополнительное поле с аналогичным значением типа addField
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я не понял
     
  6. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Думаю я понял в чём проблема, я хочу php-код выполнить уже в браузере, что никогда работать не будет... кажется правильно изложил. Так вот теперь сразу возникает другой вопрос, как мне его "аккуратно" послать на сервак и "вернуть" уже готовый инпут который лежит под $formarticle->select_article?
     
  7. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Загнать html-код, возвращаемый $formarticle->select_article, в текстовую переменную, вывести его, дать ему id, а в javascript обратиться к этому полю через id
     
  8. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    а можно пример как мне тогда вот это:
    Код (Text):
    1. <td colspan="3"><script type="text/javascript">
    2.     $(function() {
    3.             $("#ref").combobox({
    4.                     minLengthToAutocomplete : 2,
    5.                     selected : function(event,ui) {
    6.                             var obj = [];
    7.                             $.each(obj, function(key,values) {
    8.                                     if (values.method.length) {
    9.                                             getMethod(values);
    10.                                     }
    11.                                 });
    12.                         }
    13.                 });
    14.  
    15.                 function getMethod(obj) {
    16.                         var id = $("#ref").val();
    17.                         var method = obj.method;
    18.                         var url = obj.url;
    19.                         var htmlname = obj.htmlname;
    20.                     $.getJSON(url,
    21.                                         {
    22.                                                 action: method,
    23.                                                 id: id,
    24.                                                 htmlname: htmlname
    25.                                         },
    26.                                         function(response) {
    27.                                                 $.each(obj.params, function(key,action) {
    28.                                                         if (key.length) {
    29.                                                                 var num = response.num;
    30.                                                                 if (num > 0) {
    31.                                                                         $("#" + key).removeAttr(action);
    32.                                                                 } else {
    33.                                                                         $("#" + key).attr(action, action);
    34.                                                                 }
    35.                                                         }
    36.                                                 });
    37.                                                 $("select#" + htmlname).html(response.value);
    38.                                         });
    39.                 }
    40.         });</script>
    41. <select id="ref" class="flat" name="ref" style="display: none;">
    42. <option value="-1"></option>
    43. <option value="1337">10040 - HKV 48 Vorderschirm ART_000046 10040</option>
    44. // тут ещё до хрена строчек
    45. <option value="2409">10111067 - HWZ M-NRK Qn10 30° 100l/i BR 423 ART_001118 10111067</option>
    46. </select><input class="ui-autocomplete-input ui-widget ui-widget-content ui-corner-left dolibarrcombobox" autocomplete="off">
    47. <button type="button" tabindex="-1" title="Show All Items" class="ui-button ui-widget ui-state-default ui-button-icon-only ui-corner-right ui-button-icon" role="button" aria-disabled="false">
    48. <span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"></span>
    49. <span class="ui-button-text">&nbsp;</span></button>
    50. <span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span>
    51. &nbsp;/&nbsp;<input type="text" id="stok" name="stok" size="10" value=""><div class="inline-block divButAction"><a class="butAction" href="/realroute_01/comm/action/fiche.php?action=add">Weterer Artikel</a></div></td>
    загнать под:
    Код (Text):
    1. var fArtNr = $(...);
    это?
     
  9. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Вообще ничего не понял.
    Допустим, есть код $formarticle->select_article(блаблабла), который возвращает <div id=aaa (тут дофига параметров)>(тут дофига всякого содержания)</div>.
    Выводим его на страницу:
    echo "Here will be my DIV! ".$formarticle->select_article().". My div was below";
    А потом дергаете его через jQuery:
    var fArtNr = $('#aaa')
    Или через голый js:
    var fArtNr = document.getElementById('aaa')
     
  10. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Чёт ни фига не получается... может глянете ещё раз как мне подцепить див из этого куска говнокода:
    Код (Text):
    1.  '$(document).ready(function() {
    2.         $("#add").click(function() {
    3.         var intId = $("#buildyourform div").length + 1;
    4.         var fieldWrapper = $("<div class=\"fieldwrapper\" id=\"field" + intId + "\"/>");
    5.  
    6.         var fArtNr = $("#field1");
    7.        
    8.         var fAmount = $("&nbsp;/&nbsp;<input type=\"text\" size\"10\" id=\"stock\" name=\"stock\" size=\"10\" />");
    9.         var removeButton = $("<input type=\"button\" class=\"remove\" value=\"-\" />");
    10.         removeButton.click(function() {
    11.             $(this).parent().remove();
    12.         });
    13.         fieldWrapper.append(fArtNr);
    14.         fieldWrapper.append(fAmount);
    15.         fieldWrapper.append(removeButton);
    16.         $("#buildyourform").append(fieldWrapper);
    17.     });
    18.     $("#preview").click(function() {
    19.         $("#yourform").remove();
    20.         var fieldSet = $("<fieldset id=\"yourform\"><legend>Your Form</legend></fieldset>");
    21.         $("#buildyourform div").each(function() {
    22.             var id = "input" + $(this).attr("id").replace("field","");
    23.             var label = $("<label for=\"" + id + "\">" + $(this).find("input.fieldname").first().val() + "</label>");
    24.             var input;
    25.             fieldSet.append(label);
    26.             fieldSet.append(input);
    27.         });
    28.         $("body").append(fieldSet);
    29.         });
    30.     });
     
  11. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    А где сам html?
     
  12. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Так постил же уже выше...
    Код (Text):
    1. <div class="fieldwrapper" id="field1">
    2. <script type="text/javascript">
    3.     $(function() {
    4.             $("#ref").combobox({
    5.                     minLengthToAutocomplete : 2,
    6.                     selected : function(event,ui) {
    7.                             var obj = [];
    8.                             $.each(obj, function(key,values) {
    9.                                     if (values.method.length) {
    10.                                             getMethod(values);
    11.                                     }
    12.                                 });
    13.                         }
    14.                 });
    15.  
    16.                 function getMethod(obj) {
    17.                         var id = $("#ref").val();
    18.                         var method = obj.method;
    19.                         var url = obj.url;
    20.                         var htmlname = obj.htmlname;
    21.                     $.getJSON(url,
    22.                                         {
    23.                                                 action: method,
    24.                                                 id: id,
    25.                                                 htmlname: htmlname
    26.                                         },
    27.                                         function(response) {
    28.                                                 $.each(obj.params, function(key,action) {
    29.                                                         if (key.length) {
    30.                                                                 var num = response.num;
    31.                                                                 if (num > 0) {
    32.                                                                         $("#" + key).removeAttr(action);
    33.                                                                 } else {
    34.                                                                         $("#" + key).attr(action, action);
    35.                                                                 }
    36.                                                         }
    37.                                                 });
    38.                                                 $("select#" + htmlname).html(response.value);
    39.                                         });
    40.                 }
    41.         });</script>
    42. <select id="ref" class="flat" name="ref" style="display: none;">
    43. <option value="-1"></option>
    44. <option value="2396">9984380 - Ratgeber Praxishandbuch Wohnungseigentu ART_001105 9984380</option>
    45. ....
    46. <option value="2402">9984895 - Datenblatt Funksystem data (Heinze) ART_001111 9984895</option>
    47. </select><input class="ui-autocomplete-input ui-widget ui-widget-content ui-corner-left dolibarrcombobox" autocomplete="off">
    48. <button type="button" tabindex="-1" title="Show All Items" class="ui-button ui-widget ui-state-default ui-button-icon-only ui-corner-right ui-button-icon" role="button" aria-disabled="false">
    49. <span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"></span>
    50. <span class="ui-button-text">&nbsp;</span></button><span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span>
    51. &nbsp;/&nbsp;<input type="text" id="stok" name="stok" size="10" value=""></div>
    52. </div>
    Вот, вот это надо дублировать...
    Спасибо тебе огромное, за отзывчивость
     
  13. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Навскидку разобраться не получается. Выводите через console.log все объекты, с которыми работаете, проверяйте, что jQuery их находит.
     
  14. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Ребят, всем здрасти и хороших выходных. Мне они не сулят, парюсь третий день подряд и не могу сделать нужную фишку.
    Короче у меня есть кусок jQuery который доблирует мои инпуты:
    Код (Text):
    1. [/cod<script type="text/javascript">
    2.           var cnt = 2
    3.             $(document).ready(function(){
    4.              // Add new row
    5.              $(\'.add\').click(function(event){
    6.                  event.preventDefault();
    7.                  var line = $(\'#field1\').html();
    8.                     var expr = /del[0-9]+/;
    9.                     var newline = line.replace(expr, \'del\'+cnt);
    10.             $(\'#buildyourform\').append(\'<div class="fieldwrapper" id="field\'+cnt+\'">\'+newline+\'<div>\');
    11.             cnt++;
    12.         });
    13.     });
    14.  
    15.     // Delete row
    16.     function deleteRow(btn_id){
    17.         var del_id = btn_id.split(\'\');
    18.         $(\'#filed\'+del_id[1]).remove();
    19.     };';  
    20.   </script>
    Вот этот код пыхи генерирует мне форму куда я вбиваю данные:

    Код (Text):
    1.  
    2. print '<tr><td>'.$langs->trans('Article').'&nbsp;/&nbsp;'.$langs->trans("Stock").'</td><td colspan="3">';
    3.     print '<fieldset id="buildyourform">';
    4.     print '<div class="fieldwrapper" id="field1"/>';
    5.     print $formarticle->select_article($object->art_nr,'ref',array('selectarnr_id','state_id'),6);
    6.     print '<input type="text" id="stok" name="stock" size="10" value="'.GETPOST('stock').'">';
    7.     print '</div />';
    8.     print '</fieldset>';
    9.     print '<input type="button" value="Add Article" class="add" id="add" />&nbsp;&nbsp;<input type="button" value="Delete" class="del" id="del" onclick="deleteRow(this.id); return false; /">';
    10.     print '</td></tr>';
    На выходе исходный код страницы выглядит вот так:

    Код (Text):
    1.  
    2. <td colspan="3">
    3. <fieldset id="buildyourform"><div class="fieldwrapper" id="field1"/>
    4. <script type="text/javascript">
    5.     $(function() {
    6.             $("#ref").combobox({
    7.                     minLengthToAutocomplete : 2,
    8.                     selected : function(event,ui) {
    9.                             var obj = [];
    10.                             $.each(obj, function(key,values) {
    11.                                     if (values.method.length) {
    12.                                             getMethod(values);
    13.                                     }
    14.                                 });
    15.                         }
    16.                 });
    17.  
    18.                 function getMethod(obj) {
    19.                         var id = $("#ref").val();
    20.                         var method = obj.method;
    21.                         var url = obj.url;
    22.                         var htmlname = obj.htmlname;
    23.                     $.getJSON(url,
    24.                                         {
    25.                                                 action: method,
    26.                                                 id: id,
    27.                                                 htmlname: htmlname
    28.                                         },
    29.                                         function(response) {
    30.                                                 $.each(obj.params, function(key,action) {
    31.                                                         if (key.length) {
    32.                                                                 var num = response.num;
    33.                                                                 if (num > 0) {
    34.                                                                         $("#" + key).removeAttr(action);
    35.                                                                 } else {
    36.                                                                         $("#" + key).attr(action, action);
    37.                                                                 }
    38.                                                         }
    39.                                                 });
    40.                                                 $("select#" + htmlname).html(response.value);
    41.                                         });
    42.                 }
    43.         });</script>
    44. <select id="ref" class="flat" name="ref">
    45. <option value="-1"></option>
    46. <option value="2396">9984380 - Article Highrecomedly ART_001105 9984380</option>
    47. тут ещё дофига строчек материала...
    48. <option value="2402">9984895 - Funksystem data (Heinze) ART_001111 9984895</option>
    49. </select>
    50. <input type="text" id="stok" name="stock" size="10" value="">
    51. </div />
    52. </fieldset>
    53. <input type="button" value="Add Article" class="add" id="add" />&nbsp;&nbsp;
    54. <input type="button" value="Delete" class="del" id="del" onclick="deleteRow(this.id); return false; /">
    55. </td>
    И всё вроде работает на ура. Берёт fieldset и копирует мне его один к одному. Всё как задуманно. Есдинственное не перенимается Autocomplete... чтобы в следующем инпуте выбор происходил после второго знака. Есть варианты передать "зацепить" эту функцию по другому как-то?