2017-12-04 1 views
0

여기에서 다른 드롭 다운 변경으로 인해 다른 드롭 다운의 결과가 "style_code"인 드롭 다운 메뉴가 하나 있습니다. 이제 드롭 다운 선택에서 이미지를 변경하고 싶습니다. 드롭 다운에서 색상을 선택하면 다른 드롭 다운 인 크기가 변경되는 것처럼 보이지만 색상 선택에서 이미지를 변경하려고합니다. 여기AJAX를 사용하여 드롭 다운에서 이미지 변경

<script> 
    function getState(val) { 
     $.ajax({ 
      type: "POST", 
      url: "check.php", 
      data:'id='+val, 
      success: function(data){ 
       $("#style_code").html(data); 
      } 
     }); 
    } 
</script> 

는 check.php

<?php 

$con=mysqli_connect("localhost","root","","db") or die(mysql_error()); 

if(!empty($_POST["id"])) { 
    $query ="SELECT * FROM stylecolor WHERE color_code = '" . $_POST["id"] . "'"; 
    $results = mysqli_query($con,$query); 

    while (($row=mysqli_fetch_array($results))){?> 
     <option value="<?php echo $row["color_name"]; ?>"> 
      <?php echo $row['size'] ; ?> 
     </option> 
<?php 
    } 
} 
?> 
+0

당신은 dataType와 추가해야합니다 :에 "JSON을,"당신의 ajax를 실행 한 다음 check.php 파일의 데이터를 "return json_encode ($ data);"로 반환합니다. ajax를 사용하지 않고 동일한 페이지에 게시하지 않는 한 check.php 페이지에 옵션 값을 표시하지 않습니다. – MarieWeb

답변

1

귀하의 어려움을 사용하면 PHP 스크립트에서 HTML 코드를 반환하고 있다는 사실에서 유래한다. 내 조언은 JSON 데이터를 반환하고 style_code jQuery가있는 자식을 생성하는 것입니다.

그것은 그런 일이 될 것입니다 :

check.php

<?php 

$con = mysqli_connect("localhost", "root", "", "db") or die(mysql_error()); 

if(!empty($_POST["id"])) { 
    $query = "SELECT * FROM stylecolor WHERE color_code = '" . $_POST["id"] . "'"; 
    $results = mysqli_query($con, $query); 

    $data = new stdClass(); // This object will carry the results 

    while (($row = mysqli_fetch_object($results))) { 
     $data->option[] = $row; 
    } 

    // Another query to get the image name 
    $query = "SELECT name FROM image_name WHERE color_code = '" . $_POST["id"] . "'"; 
    $results = mysqli_query($con, $query); 

    if ($row = mysqli_fetch_object($results)) { 
     $data->image_name = $row->name; 
    } 

    header('Content-Type: application/json'); 
    echo json_encode($data); 

} 

HTML & 자바 스크립트 :

... 

<div class="thumb-image" id="style_image" > 
    <img src="images/<?php echo $productimg1?>" data-imagezoom="true" class="img-responsive" alt="" /> 
</div> 

... 

<script language="javascript"> 
function getState(val) { 
    $.ajax({ 
     type: "POST", 
     url: "check.php", 
     data: {id: val}, 
     dataType:'json', 
     success: function(data) { 
      $("#style_code").children().remove(); // empty the dropdown 
      // Add new options in the dropdown from the result data 
      data.option.forEach(function (item) { 
       $("#style_code").append('<option value="' + item.color_name + '">' + item.size + '</option>'); 
      }); 
      // Change the 'src' attribute of the <img> 
      $("#style_image").find('img').attr('src', 'images/' + data.image_name + '?d=' + Date.now().toString()); 
     } 
    }); 
} 
</script> 
+1

또한 새 이미지 src에 유닉스 시간을 추가합니다. -> $ ("# style_image"). attr ('src', data.image_url + '? v ='+ unix time here); –

+0

그렇지 않으면 이미지가 클라이언트 측에서 변경되지 않습니다. –

+0

감사합니다. 같은 테이블 스타일의 색상으로 image_name이라는 테이블 이름을 가지고 있는데,이 테이블 스타일 색상으로 이미지 이름을 저장합니다. \t

basiclearner

관련 문제