Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Передать значение переменной (https://javascript.ru/forum/dom-window/61534-peredat-znachenie-peremennojj.html)

Salvat 22.02.2016 17:29

Передать значение переменной
 
Получаю какая картинка была нажата
$(document).ready(function(){
        $(".knopka").click(function(){
            var cliked = this.id.split('-');
            var arr = cliked[1];
      
    });


Вывожу превью
$(document).ready(function () {
    $('<div><img src="ТУТ" style="position: relative;" /><div>') .css({
           float: 'left',
        position: 'relative',
        overflow: 'hidden',
        width: '150px',
        height: '200px'
    }) .insertAfter($('#photo'));
 
    $('#photo').imgAreaSelect({
        aspectRatio: '1:1',
        handles: true,
        onSelectChange: preview,
        onSelectEnd: function ( image, selection ) {
            $('input[name=x1]').val(selection.x1);
            $('input[name=y1]').val(selection.y1);
            $('input[name=x2]').val(selection.x2);
            $('input[name=y2]').val(selection.y2);
            $('input[name=w]').val(selection.width);
            $('input[name=h]').val(selection.height);
        }
    });
}); 
</script>

Как передать сюда, где ТУТ значение переменной arr?
$('<div><img src="ТУТ" style="position: relative;" /><div>') .css({

рони 22.02.2016 17:51

Salvat, строка 5
$('#photo + div img')[0].src = arr

Salvat 22.02.2016 18:02

рони,
$(document).ready(function(){
        $(".knopka").click(function(){
            var cliked = this.id.split('-');
            var arr = cliked[1];
            $('#photo + div img')[0].src = "photo/" + arr;
        });
    });

не сработало

Salvat 22.02.2016 18:03

<script type="text/javascript"> 
function preview(img, selection) {
    var scaleX = 150 / (selection.width || 1);
    var scaleY = 200 / (selection.height || 1);
    $('#photo + div > img').css({
        width: Math.round(scaleX * 600) + 'px',
        height: Math.round(scaleY * 400) + 'px',
        marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px',
        marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'
    });
} 

$(document).ready(function (arr) {
    $('<div><img  src="ТУТ" style="position: relative;" /><div>') .css({
           float: 'left',
        position: 'relative',
        overflow: 'hidden',
        width: '150px',
        height: '200px'
    }) .insertAfter($('#photo'));

    $('#photo').imgAreaSelect({
        aspectRatio: '1:1',
        handles: true,
        onSelectChange: preview,
        onSelectEnd: function ( image, selection ) {
            $('input[name=x1]').val(selection.x1);
            $('input[name=y1]').val(selection.y1);
            $('input[name=x2]').val(selection.x2);
            $('input[name=y2]').val(selection.y2);
            $('input[name=w]').val(selection.width);
            $('input[name=h]').val(selection.height);
        }
    });
}); 
</script>

Это создается превью.

Salvat 22.02.2016 18:09

Ошибка была у меня, рони, огромнейшее спасибо, сутки голову ломал.

Salvat 22.02.2016 18:13

Еще вопрос, а если не содержит arr адрес изображения, как тогда указать другое?

рони 22.02.2016 18:13

Salvat,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

  <script>
   $(function(){
   $('<div><img src="ТУТ" style="position: relative;" /><div>') .css({
        float: 'left',
        position: 'relative',
        overflow: 'hidden',
        width: '150px',
        height: '200px'
    }) .insertAfter($('#photo'));
    $('#photo + div img')[0].src = "http://javascript.ru/forum/images/ca_serenity/misc/logo.gif"
   })
  </script>
</head>

<body>
 <style type="text/css">
     .hot{
          border: 1px dashed Gray; padding: 5px; height: 100px; width: 100px
     }

   </style>
  <div class="hot" id="photo"></div>
</body>

</html>

рони 22.02.2016 18:15

Salvat,
var arr = cliked[1] || "ссылка на заглушку";

Salvat 22.02.2016 18:25

Действительно, профессор!!!
Ну и последний вопрос, как передать это значение, которое имеет src='arr' в переменную php не используя GET запрос. Или только с помощью GET можно получить значение?

рони 22.02.2016 18:32

Salvat,
не понимаю о чём вы спросили, ждите специалиста.

Salvat 22.02.2016 18:34

$(document).ready(function(){
        $(".knopka").click(function(){
            var cliked = this.id.split('-');
            var arr = cliked[1] || "photo/zaglushka.jpg";
            $('#photo + div img')[0].src = "photo/" + arr;
            var message = encodeURIComponent(arr);
window.location.href = 'photo.php?img='+message;
        });
    });

Таким образом отправляется GET запрос, потом я могу получить значение переменной message с помощью php. Мне необходимо передать значение переменной arr на другую страницу.

laimas 22.02.2016 18:51

Цитата:

Сообщение от Salvat
Ну и последний вопрос, как передать это значение, которое имеет src='arr' в переменную php не используя GET запрос

Никак, если сервер не получает GET/POST запроса, то а намерениях клиента он естественно знать не будет.

laimas 22.02.2016 18:53

Цитата:

Сообщение от Salvat
Таким образом отправляется GET запрос, потом я могу получить значение переменной message с помощью php.

В данном случае вы не получите значение переменной message, ибо переменой (параметром) на сервере будет img.

Цитата:

Сообщение от Salvat
Мне необходимо передать значение переменной arr на другую страницу.

Передавайте, в чем проблема?

Salvat 22.02.2016 19:07

Цитата:

Передавайте, в чем проблема?
Каким образом, подскажите, если не сложно.
Цитата:

В данном случае вы не получите значение переменной message, ибо переменой (параметром) на сервере будет img.
Значение параметра img с помощью GET я могу получить, только за счет перезагрузки страницы. А мне бы хотелось, чтобы данные arr передавались, допустим, методом GET/POST на другую страницу, не получая их с помощью GET на текущей странице. Есть еще форма, которая отправляет данные
<form action="crop.php" method="post">
    <input type="hidden" name="x1" value="" />
    <input type="hidden" name="y1" value="" />
    <input type="hidden" name="x2" value="" />
    <input type="hidden" name="y2" value="" />
    <input type="hidden" name="w" value="" />
    <input type="hidden" name="h" value="" />
  <input type='submit' value='Crop' />
</form>

Вот мне необходимо на crop.php отправить текущее значение переменной arr.

laimas 22.02.2016 19:25

Цитата:

Сообщение от Salvat
Значение параметра img с помощью GET я могу получить, только за счет перезагрузки страницы.

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

А то городите какую-то несуразицу - чтобы данные arr передавались, допустим, методом GET/POST на другую страницу, не получая их с помощью GET на текущей странице. А с какой страницы их надо передать?

Salvat 22.02.2016 19:32

Цитата:

Не обязательно, его можно передать и асинхронным запросом на любую не текущую страницу. Вопрос только в том для чего передать?
Для продожения работы с изображением, а именно, сохранением указанных пропорций.
Вы читайте внимательней, уважаемый. Я же пишу
Цитата:

не получая их с помощью GET на текущей странице.
Если я получу на текущей странице, то это будет с помощью метода GET
$arr = $_GET['img'];
вот таким образом с помощью php, что приведет к перезагрузке страницы. Мне же необходимо, со страницы, где получаю данные arr их передать на другую страницу вместе с формой. Так яснее?

laimas 22.02.2016 19:35

Цитата:

Сообщение от Salvat
Вы читайте внимательней, уважаемый.

И вам того же.

Передать на другую страницу форму, это:

action="url другой страницы"

это разве не на другую страницу? А чтобы при этом остаться на текущей странице не прибегая к средствам сервера, это Ajax.

Salvat 22.02.2016 19:44

Нет, у меня нет необходимости оставаться на текущей странице. Все верно Вы поняли, методом POST или GET отправить значение этого самого arr вместе с формой. Как?

laimas 22.02.2016 19:53

А если нет, то чего же вы темень разводите непонятную.

Как передать с формой:

а) поместить значение массива как json-строку в добавленное поле формы.
б) если форма передается методом POST, то массив преобразованный в url параметры можно добавить к action формы, при этом поля формы сервер получит в $_POST, а этот массив а $_GET.

Выбирайте как удобнее.

Salvat 22.02.2016 20:00

Я таких людей никогда не встречал, вместо одной строчки кода, развести такую полемику.
<form action="crop.php" method="post">
    <input type="hidden" name="x1" value="" />
    <input type="hidden" name="y1" value="" />
    <input type="hidden" name="x2" value="" />
    <input type="hidden" name="y2" value="" />
    <input type="hidden" name="w" value="" />
    <input type="hidden" name="h" value="" />
    <input type="hidden" name="arr" id="arr" value=""> 
  <input type='submit' value='Crop' />
</form>

Вот так добавить присвоим значение arr value
А вот она та самая строчка текста, которую необходимо было написать.
document.getElementById('arr').value="photo/" + arr;

laimas 22.02.2016 20:22

Цитата:

Сообщение от Salvat
Я таких людей никогда не встречал, вместо одной строчки кода, развести такую полемику.

Досточтимый сэр, какого же хрена вы тогда задаете вопросы "как"?

Если ваш arr, это строка, то не надо везде писать "массив", "массив", помещайте в свое поле и ....

А передать можно двумя способами, как, было сказано выше, на будущее, для чтобы знать впредь.


Часовой пояс GMT +3, время: 01:02.