1

画像の色と画像 ID の値の両方を持つ配列があります。

この情報をエコーできますが、これを js ファイルに取り込む方法がわかりません。

私のjsファイルは次のようなものです:

$(document).ready(function(){

    var colour = false;
    $('.options').click(function(){
        colour = $(this).val();
        console.log(colour);
        if(colour == 'White'){
            var imageid = 758;
        }
        else if(colour == 'Black') {
            var imageid = 752;
        }
        else if(colour == 'Light Oak') {
            var imageid = 755;
        }
        else if(colour == 'Rosewood') {
            var imageid = 757;
        }
        else if(colour == 'Green') {
            var imageid = 754;
        }
        else if(colour == 'Red') {
            var imageid = 756;
        }
        else if(colour == 'Blue') {
            var imageid = 753;
        }
        else {
            var imageid = colour;
        }


        $('.options-input').val(imageid);

        console.log(this);

        $.post("index.php", { image_id: imageid }, function(results) {
            $('body').html(results);
            console.log(results);

         });    
        console.log(url);
    }); 
});

現時点ではこれを手動で行っており、クリックすると画像をindex.phpに投稿できます

$_POST['image_id'];

そこから動作します。

問題は、新しい配列の値に応じて動的に js ステートメントを作成したいということです。

4

4 に答える 4

2

提案されているようにjQueryとphpを混在させることができますが、私はそうすることを避けたいと思います。代わりに、このデータを持つDOM(または他の要素の属性)に要素を追加して、後でフェッチすることができます。

<?php echo '<span id="colour" hidden="hidden">Light Oak</span>'; ?>

if (colour == $("#colour").text()) {
   // ...
}
于 2012-04-20T21:47:41.603 に答える
1

if文はあまり使わないでください!たとえば、次のように使用できます。

// JavaScript / jQuery

var imageid,
  colorObj = {
    "White": 758,
    "Black": 752,
    "Light Oak": 755
  };

if (colorObj[colour] !== undefined) {
  imageid = colorObj[colour];
}

それは簡単です!PHP を使用すると、次のようなスクリプトを作成できます。

<?php

echo '<script type="text/javascript">var imageid,colorObj={';
$count = count($image);
for ($i = 1; $i <= $count; ++$i) {
  echo '"' . $colour . '":' . $image[$i];
  if ($i < $count) {
    echo ',';
  }
}
echo '};if(colorObj[colour]!==undefined){imageid=colorObj[colour]}</script>';
于 2012-04-20T21:59:06.047 に答える
0

醜い方法

<script>
<?php
    foreach ($images as $index => $imageid) {

        if ($index > 0) echo "else ";
        echo "if (colour == '$colour') {\n";
        echo "    var imageid = $imageid;\n";
        echo "}\n";
    }
?>
</script>

醜い方法

<?php

switch($color) {
    case 'White':
        $imageid = 758;
        break;
    case 'Black':
        $imageid = 752;
        break;
    case 'Light Oak':
        $imageid = 755;
        break;
}

echo "<script>var imageid = $imageid;</script>";
?>
于 2012-04-20T21:48:14.033 に答える
0

質問を変更した後、再度回答したいと思います。ユーザーがページ内の要素から選択した色に応じて画像を配信したいようです。あなたは PHP スクリプトを投稿していませんが、あなたが今行っていることは、PHP を介して行う方がはるかに優れていると言っておきましょう。

$(document).ready(function () {
  $('.options').click(function () {
    var color = $(this).val();
    if (color !== undefined && color !== null && color !== '') {
      $.post('index.php', {color: color}, function (response) {
        $('body').html(response);
      });
    }
  });
});

そして、PHP ファイルで次の操作を行います。

<?php

if (isset($_POST['color']) && !empty($_POST['color'])) {
  $colors = array(
    'White' => 1234,
    'Black' => 4321,
  );
  if (array_key_exists($_POST['color'], $colors)) {
    echo $colors[$_POST['color']];
  }
}
于 2012-04-21T16:20:02.800 に答える