Как передать результат Javascript !

  • 34 Ответов
  • 1404 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Здравствуйте!
Пытаюсь передать результат работы скрипта так:
{
            $("#tarif").html( result );
        }
Но никакого результата в соответствующее поле не заносится.
Если в свойствах формы, в макете, поставить <div id="tarif"></div>, результат выводится, а текстовым полем в инструментах формы - нет.

Подскажите пожалуйста - как сделать, чтобы результат выводился через поля RSForm. Спасибо!

*

al-teen

  • Support Team
  • *****
  • 2458
  • 213
  • im
Re: Как передать результат Javascript !
« Ответ #1 : 26.12.2015, 20:06:28 »
Код
setTimeout(function () {
    $("#tarif").html( result );
});
Если не прокатит, тогда делайте это из js RSForm. Там должны быть какие-нибудь колбэки типа success для AJAX. Сейчас Ваша проблема в асинхронности работы формы. Вы пытаетесь управлять DOM из соседнего окружения переменных. Там, откуда пытаетесь что-либо сделать, недоступен элемент #tarif. Чтобы проверить сделайте вот так

Код
console.log($("#tarif").length);

Результатом будет "0". Потому что это окружение сформировано раньше, чем в DOM определяется форма с id="tarif". setTimeout - это один из способов вырвать что-либо из синхронного потока. Не всегда работает правда. Но попробовать стоит.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #2 : 26.12.2015, 22:01:13 »
Не прокатило  :(
console.log($("#tarif").length); - ничего не вывел (может, я не туда куда нужно вставил (следующей строкой после $("#tarif").html( result );))
Сама функция:
<script>
function getdetails(){
    var index1 = $('#index1').val();
    var index2 = $('#index2').val();
    $.ajax({
        type: "POST",
        url: "details.php",
        data: {index1:index1, index2:index2}
    }).done(function( result )
        {
            $("#tarif").html( result );
        });
}
</script>

Сейчас еще попробую вывести форму не через материалы, а напрямую.
- Ничего не дало. Только перестал работать скрипт подсказок (поместил в свойства->java)
« Последнее редактирование: 26.12.2015, 22:10:48 от Agard »

*

al-teen

  • Support Team
  • *****
  • 2458
  • 213
  • im
Re: Как передать результат Javascript !
« Ответ #3 : 26.12.2015, 22:52:53 »
Если console.log вообще ничего не вывел, то Ваш скрипт просто не работает. getdetails() либо не включается, либо AJAX не отрабатывает с ошибками. Не там ищете в общем.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #4 : 26.12.2015, 23:02:24 »
В том-то и дело, что работает. Если в макет формы вставить: <div>Тариф: <div id="tarif"></div></div>, то на выходе получаю значение. Если использовать "Компоненты"-"поля формы" (текстовое поле), то - не работает. Как Вы уже правильно ранее заметили - не видит переменную, в которую должен скинуть результат.

*

al-teen

  • Support Team
  • *****
  • 2458
  • 213
  • im
Re: Как передать результат Javascript !
« Ответ #5 : 26.12.2015, 23:28:35 »
Код
function getdetails(){
    var index1 = $('#index1').val();
    var index2 = $('#index2').val();
    $.ajax({
        type: "POST",
        url: "details.php",
        data: {index1:index1, index2:index2}
    }).done(function( result )
        {
            console.log(result);
        });
}

Вот так понятнее? Что возвращает? Если ничего, следовательно AJAX не работает.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #6 : 27.12.2015, 00:04:59 »
По первому варианту console.log($("#tarif").length);
 при <div>Тариф: <div id="tarif"></div></div> показал единицу.
При варианте с "родным" полем - тоже 1
Еще пишет что присутствует неожиданный идентификатор: Uncaught SyntaxError: Unexpected identifier
Последний момент убрал
« Последнее редактирование: 27.12.2015, 00:08:10 от Agard »

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: Как передать результат Javascript !
« Ответ #7 : 27.12.2015, 00:08:02 »
Код details.php?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

al-teen

  • Support Team
  • *****
  • 2458
  • 213
  • im
Re: Как передать результат Javascript !
« Ответ #8 : 27.12.2015, 00:13:25 »
смотрите, что возвращает result

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #9 : 27.12.2015, 00:23:21 »
вернуло "900" - тарифную ставку из базы. ! Знать, надо $result ...

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #10 : 27.12.2015, 00:25:27 »
Или - как теперь делать?

*

al-teen

  • Support Team
  • *****
  • 2458
  • 213
  • im
Re: Как передать результат Javascript !
« Ответ #11 : 27.12.2015, 00:26:18 »
Тогда Вам остается показать таки сайт с этим всем делом.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #12 : 27.12.2015, 00:34:47 »
Он только на локалке у меня. Могу архив с базой и паролем на Яндекс диск выложить.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #13 : 27.12.2015, 00:37:23 »
Т.е., на данный момент ситуация такова: result не видит куда отправить полученное значение? (я уже попробовал переименовать поле)

PHP:
<?php
//Подключение к базе данных
$DBASE = mysql_connect("localhost","root", "") or die("Could not connect: " . mysql_error());
mysql_select_db("express") or die("Could not select database");
mysql_query("SET NAMES utf8");

//Если данные из формы передались успешно, то заносим их в переменные $index1 и $index2, в противном случае удаляем переменные.
if($_POST['index1'] and $_POST['index1'] != ''){$index1 = $_POST['index1'];}else{unset($index1);}
if($_POST['index2'] and $_POST['index2'] != ''){$index2 = $_POST['index2'];}else{unset($index2);}

//Если все данные передалис успешно, то выполняем 3 запроса к базе данных.
if(isset($index1) AND isset($index2)){

//Запрос 1
//Находим строку в таблице x6yzj_zona, в которой значение indx равен $index1 и заносим значение zona в переменную $zona_a
$result_zona_a = mysql_query("SELECT zona FROM x6yzj_zona WHERE indx = $index1");
$row_zona_a = mysql_fetch_array($result_zona_a);
$zona_a = $row_zona_a['zona'];

//Запрос 2
//Находим строку в таблице x6yzj_zona, в которой значение indx равен $index2 и заносим значение zona в переменную $zona_b
$result_zona_b = mysql_query("SELECT zona FROM x6yzj_zona WHERE indx = $index2");
$row_zona_b = mysql_fetch_array($result_zona_b);
$zona_b = $row_zona_b['zona'];

//Запрос 3
//Ищем строку в таблице x6yzj_tarif, в которой значение zonaa равно переменной $zona_a и значение zonab равно $zona_b и выводим значение tarif в переменную $tarif
$result_tarif = mysql_query("SELECT tarif FROM x6yzj_tarif WHERE zonaa='$zona_a' AND zonab='$zona_b'");
$row_tarif = mysql_fetch_array($result_tarif);
$tarif = $row_tarif['tarif'];


echo "$tarif";
}
?>
« Последнее редактирование: 27.12.2015, 00:52:27 от Agard »

*

al-teen

  • Support Team
  • *****
  • 2458
  • 213
  • im
Re: Как передать результат Javascript !
« Ответ #14 : 27.12.2015, 01:56:06 »
Устанавливать себе что-либо ради помощи Вам тут вряд ли кто-то будет. Помощь нужна Вам, а не нам. Если не можете организовать демо в интернетах, следовательно и помощь не так чтобы очень нужна.

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: Как передать результат Javascript !
« Ответ #15 : 27.12.2015, 02:54:33 »
Хотя мне не очень нравится ваш PHP-код, он возвращает результат
вернуло "900" - тарифную ставку из базы.
Тогда не понимаю, почему
Код: javascript
   done(function( result )
        {
            $("#tarif").html( result );
        });
не работает. А если сделать проверку
Код: javascript
   done(function( result )
        {
            $("#tarif").html("test");
        });
?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #16 : 27.12.2015, 09:17:16 »
$("#tarif").html("test");
900
1
на
console.log(result);
console.log($("#tarif").length);
Если test без кавычек
$("#tarif").html( test );
то:
Uncaught ReferenceError: test is not defined

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #17 : 27.12.2015, 11:53:23 »
Хотя мне не очень нравится ваш PHP-код, он возвращает результат
Если так:
<div>Тариф: <div id="tarif"></div></div>
при "Генерировать макет автоматически?" = нет
то = результат выводит.
Проблема в том, что в этом случае он не записывается.
Расчеты, tarif = {tarif:value} - ничего не меняет.

Пока не пробовал вариант "//<code>
PHP-код
//</code> - так как не знаю - как?
« Последнее редактирование: 27.12.2015, 11:57:30 от Agard »

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #18 : 27.12.2015, 14:24:32 »
Хотя мне не очень нравится ваш PHP-код, он возвращает результат
А, его как-то по-другому, в рамках RSForm, реализовать можно?
Что-то вроде:
//<code>
$db = JFactory::getDbo();
$db->setQuery("SELECT 'tarif' FROM #__tarif WHERE 'zonaa'=("SELECT 'zona' FROM '#__zona' WHERE 'indx' = '".$index1."'") AND 'zonab'=("SELECT 'zona' FROM '#__zona' WHERE 'indx' = '".$index2."'")");
$tarif = $db->loadResult();
//</code>

(в этом варианте синтаксическая ошибка)

?

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: Как передать результат Javascript !
« Ответ #19 : 27.12.2015, 15:26:00 »
Не заметил, что тема в разделе RSForm, которым я не пользуюсь. Зачем вам этот RSForm? Напишите сами, это всего лишь форма.
И зачем вы смотрели в консоле, если код
Код: javascript
      done(function( result )
        {
            $("#tarif").html("test");
        });
?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #20 : 27.12.2015, 15:47:31 »
      done(function( result )
        {
            $("#tarif").html("test");
        });
 Ничего не произошло.
Наверное - да, надо без конструктора.

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: Как передать результат Javascript !
« Ответ #21 : 27.12.2015, 16:20:26 »
Тогда попробуйте
Код: javascript
      done(function( result )
        {
            $("#tarif").text("test");
        });
Без видения общей картины будет трудно гадать, хотя, судя по вашим постам, вроде AJAX успешно выполнен.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #22 : 27.12.2015, 17:47:48 »
По последним тестам в простом Жумловском матерьяле выяснилось: переменная $tarif не хочет жить в инпуте: <input type="text" name="tarif" id="tarif" />. А, вот в диве - пожалуйста: <div id="tarif"></div>
Может, здесь можно этот момент уточнить:
function getdetails(){
    var index1 = $('#index1').val();
    var index2 = $('#index2').val();
    $.ajax({
        type: "POST",
        url: "details.php",
        data: {index1:index1, index2:index2}
    }).done(function( result )
        {
            $("#tarif").html( result );
        });
}

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #23 : 27.12.2015, 17:49:55 »
Причем, если оба варианта присутствуют на странице: инпут и div с id=tarif, она тоже никуда не хочет ставиться...

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: Как передать результат Javascript !
« Ответ #24 : 27.12.2015, 19:43:43 »
По последним тестам в простом Жумловском матерьяле выяснилось: переменная $tarif не хочет жить в инпуте: <input type="text" name="tarif" id="tarif" />. А, вот в диве - пожалуйста: <div id="tarif"></div>
А чего вы хотите? Для input используется val().
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #25 : 27.12.2015, 19:55:00 »
А я только разобрался с тем - где смотреть test...
Не подскажете, val() - как правильно надо прописать в этом:
<script>
function getdetails(){
    var index1 = $('#index1').val();
    var index2 = $('#index2').val();
    $.ajax({
        type: "POST",
        url: "details.php",
        data: {index1:index1, index2:index2}
    }).done(function( result )
        {
            $("#tarif").html( result );
        });
}
</script>

Спасибо!

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: Как передать результат Javascript !
« Ответ #26 : 27.12.2015, 20:01:36 »
Синтаксически все правильно, больше я ничего не могу сказать: вы задали загадку, приведя скрипт без HTML.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #27 : 27.12.2015, 20:06:26 »
<div class="rsform-block rsform-block-tarif">
      <div class="formControlLabel">Тариф</div>
      <div class="formControls">
      <div class="formBody"><input type="text" value="" size="20"  name="form[tarif]" id="tarif"  class="rsform-input-box"/><span class="formValidation"><span id="component119" class="formNoError">Неверный ввод</span></span></div>
      <p class="formDescription"></p>
      </div>
   </div>

*

robert

  • Профи
  • ********
  • 4002
  • 371
Re: Как передать результат Javascript !
« Ответ #28 : 27.12.2015, 20:10:00 »
Код: javascript
$("#tarif").val(result);
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Agard

  • Осваиваюсь на форуме
  • ***
  • 83
  • -1
Re: Как передать результат Javascript !
« Ответ #29 : 27.12.2015, 20:42:39 »
Код: javascript
$("#tarif").val(result);
Не-а... :(
Может, где-то надо поставить ".input" ?