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

Agard

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

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

al-teen

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

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

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

Agard

  • Захожу иногда
  • 83
  • 0 / 1
Re: Как передать результат Javascript !
« Ответ #2 : 26.12.2015, 20: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, 20:10:48 от Agard »
*

al-teen

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

Agard

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

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Re: Как передать результат Javascript !
« Ответ #5 : 26.12.2015, 21: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
  • 0 / 1
Re: Как передать результат Javascript !
« Ответ #6 : 26.12.2015, 22:04:59 »
По первому варианту console.log($("#tarif").length);
 при <div>Тариф: <div id="tarif"></div></div> показал единицу.
При варианте с "родным" полем - тоже 1
Еще пишет что присутствует неожиданный идентификатор: Uncaught SyntaxError: Unexpected identifier
Последний момент убрал
« Последнее редактирование: 26.12.2015, 22:08:10 от Agard »
*

robert

  • Живу я здесь
  • 4610
  • 429 / 16
Re: Как передать результат Javascript !
« Ответ #7 : 26.12.2015, 22:08:02 »
Код details.php?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Re: Как передать результат Javascript !
« Ответ #8 : 26.12.2015, 22:13:25 »
смотрите, что возвращает result
*

Agard

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

Agard

  • Захожу иногда
  • 83
  • 0 / 1
Re: Как передать результат Javascript !
« Ответ #10 : 26.12.2015, 22:25:27 »
Или - как теперь делать?
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Re: Как передать результат Javascript !
« Ответ #11 : 26.12.2015, 22:26:18 »
Тогда Вам остается показать таки сайт с этим всем делом.
*

Agard

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

Agard

  • Захожу иногда
  • 83
  • 0 / 1
Re: Как передать результат Javascript !
« Ответ #13 : 26.12.2015, 22: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";
}
?>
« Последнее редактирование: 26.12.2015, 22:52:27 от Agard »
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Re: Как передать результат Javascript !
« Ответ #14 : 26.12.2015, 23:56:06 »
Устанавливать себе что-либо ради помощи Вам тут вряд ли кто-то будет. Помощь нужна Вам, а не нам. Если не можете организовать демо в интернетах, следовательно и помощь не так чтобы очень нужна.
*

robert

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

Agard

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

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

Agard

  • Захожу иногда
  • 83
  • 0 / 1
Re: Как передать результат Javascript !
« Ответ #18 : 27.12.2015, 12: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

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

Agard

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

robert

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

Agard

  • Захожу иногда
  • 83
  • 0 / 1
Re: Как передать результат Javascript !
« Ответ #22 : 27.12.2015, 15: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
  • 0 / 1
Re: Как передать результат Javascript !
« Ответ #23 : 27.12.2015, 15:49:55 »
Причем, если оба варианта присутствуют на странице: инпут и div с id=tarif, она тоже никуда не хочет ставиться...
*

robert

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

Agard

  • Захожу иногда
  • 83
  • 0 / 1
Re: Как передать результат Javascript !
« Ответ #25 : 27.12.2015, 17: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

  • Живу я здесь
  • 4610
  • 429 / 16
Re: Как передать результат Javascript !
« Ответ #26 : 27.12.2015, 18:01:36 »
Синтаксически все правильно, больше я ничего не могу сказать: вы задали загадку, приведя скрипт без HTML.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Agard

  • Захожу иногда
  • 83
  • 0 / 1
Re: Как передать результат Javascript !
« Ответ #27 : 27.12.2015, 18: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

  • Живу я здесь
  • 4610
  • 429 / 16
Re: Как передать результат Javascript !
« Ответ #28 : 27.12.2015, 18:10:00 »
Код: javascript
$("#tarif").val(result);
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Agard

  • Захожу иногда
  • 83
  • 0 / 1
Re: Как передать результат Javascript !
« Ответ #29 : 27.12.2015, 18:42:39 »
Код: javascript
$("#tarif").val(result);
Не-а... :(
Может, где-то надо поставить ".input" ?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Передать ссылку емейлом в форме (RSForm, или другой компонент)

Автор mur4alka

Ответов: 0
Просмотров: 9
Последний ответ 11.12.2018, 22:30:40
от mur4alka
Как отправить результат JS калькулятора на основе RSForm на email?

Автор DorianLeven

Ответов: 0
Просмотров: 345
Последний ответ 01.11.2017, 11:53:34
от DorianLeven
Подскажите. как правильно передать параметр в цель Метрики

Автор Ragivort

Ответов: 1
Просмотров: 1025
Последний ответ 24.03.2016, 22:35:51
от Hot_Gomer
Как вызвать результат расчетов?

Автор Agard

Ответов: 1
Просмотров: 876
Последний ответ 01.02.2016, 01:03:49
от Agard
Как передать заголовок страницы в форму RSForm pro ?

Автор demis

Ответов: 27
Просмотров: 10169
Последний ответ 29.01.2016, 15:30:57
от griale