Можете ли вы запросить / получить переменные из img src? - PullRequest
2 голосов
/ 21 августа 2010

Это вопрос из двух частей, но я хочу убедиться, что первый действительно достижим.

Во-первых, вы можете получить переменные доступа, установленные с помощью img src? Я пытаюсь jQuery, в том числе MySQL UPDATE и т. Д., Но мне нужно было убедиться, что это сработает?

<a href="#" class="chnge"><img src="filename.jpg?id=1&open=1" /></a>

Тогда jQuery будет иметь что-то похожее на:

      $("img#chnge").click(function() {

        var id      = $('#id').attr('value');
        var open    = $('#open').attr('value');
            $.ajax({
                type: "POST",
                url: "update.php",
                data: "id="+ id +"& open="+ open,
                success: function(){
                    $('img#chnge').fadeTo('slow',0.4);

                }
            });
        return false;
        });

Надеюсь, это очевидно, в принципе, у меня есть изображение, если его "open" установлено в 1, когда вы щелкаете по нему, изменяется непрозрачность, но это также отправляет запрос в мой update.php.

Я знаю, где ошибки в этой форме, я просто не знаю, как их исправить. # 1 = переменные в img src (я не знаю, смогу ли я вместо этого поместить их в href?), А второе - это $ ('# id') и $ ('# open'), которые я не считаю правильно, но я не знаю, на что их поменять.

Любая помощь будет принята с благодарностью.

Phillip.

ОБНОВЛЕНИЕ: Прочитав ответ Отарса, я подумал, что лучше добавить полный код: как изображения должны быть там, где они есть ...

Спасибо вам. Поскольку эти изображения генерируются с помощью цикла for () (php), это повлияет на работу этого кода?

<?php
$query = mysql_query("SELECT * FROM catalogue");
$num = mysql_num_rows($query);

for ($x=1;$x<=$num;$x++) {

  $row = mysql_fetch_row($query);

  ?>

  <a href="#" id="chngeHref" /><img src="<?php echo $row[2]; ?>?id=<?php echo $row[0]; ?>&open=<?php echo $row[1]; ?>" id="chnge" /></a>

<?php

  /* row[0] = id 
     row[1] = open (1 or 0)
     row[2] = image url
  */

  }

?>

Ответы [ 2 ]

2 голосов
/ 21 августа 2010

В любом случае ваше изображение должно быть PHP-скриптом ...

Передать в него параметры GET, делать все, что вы хотите в скрипте, а затем вывести изображение следующим образом:

Допустим,файл называется image.php

<?php

    $par = $_GET['test'];

    // Do some PHP related job here


    // Load the image
    header('Content-Type: image/jpeg');
    header('Location: /path/to/your/image.jpg');

?>

Затем используйте его так: <img src="image.php?test=value">

Сначала он вызовет скрипт PHP, а затем отобразит изображение.

0 голосов
/ 21 августа 2010

Извините, я не совсем понимаю, что вы пытаетесь сделать, но думаю, что это может помочь.Вы можете сохранить состояние «открытия» изображений как переменную внутри $ (function () {..}).После этого вы сможете получить и установить значение этой переменной в вашем событии клика.

$(function() {

    var open = false; // store the image state in the closure not global
    var id = .. 

    $(".chnge img").click(function() {
        if (!open) {
            // fade-in, post to server or whatever

            $.ajax({
                type: "POST",
                url: "update.php",
                data: "id="+ id +"& open="+ open,
                success: function(){
                    // handle response here.
                    // you can still access the open variable here!
                }
            }

            open = true; // want to update open?
        } 
    });
});
...