2014-01-15 3 views
0

모든 자식 이미지 src를 Array에 저장하고 있습니다. 샘플 템플릿을 만들고 배열 루프에서 src를 변경하고 이미지에서 변환하려고합니다. 마지막 4 개의 배열 값만 이미지로 저장됩니다. 이 아약스 문제 또는 무엇입니까 ??html2canvas를 사용하여 폴더에 이미지를 생성하는 배열 이미지

HTML 코드 :

<div id="present_sample" style="display:"> 
<img id="one" src="img/Tulips.jpg" /> 
<img id="two" class="alignright" src="img/Tulips.jpg" /> 
<br/> 
<img id="three" src="img/Tulips.jpg" /> 
<img id="four" class="alignright" src="img/Tulips.jpg" /> 

jQuery 코드 :

$('#convert').click(function() 
{ 
var images = $('#links a').children('img').map(function(){ 
return $(this).attr('src') }).get(); 
    console.log(images); 

    //$('#gallery_pic').append(images); 
    var side=1; 
     var data; 
    for (i = 0; i < images.length; i++) { 


     console.log('Top i is '+i); 
     console.log('Group*******'); 
     console.log(i+','+images[i]); 
     $('#one').attr("src", images[i++]); 
     console.log(i+','+images[i]); 
     $('#two').attr("src", images[i++]); 
     console.log(i+','+images[i]); 
     $('#three').attr("src", images[i++]); 
     console.log(i+','+images[i]); 
     $('#four').attr("src", images[i]); 
     console.log('Group Ends'); 
     html2canvas([document.getElementById('present_sample')], { 
    onrendered: function (canvas) { 
     $('canvas').html(canvas); 
     var data = canvas.toDataURL('image/png'); 
     // AJAX call to send `data` to a PHP file that creates an image from the dataURI string and saves it to a directory on the server 

     $.ajax({ 
      type: "POST", 
      url: 'download.php', 
      data: { 
      image: data}, 
      success:function(data) { 
      alert('Ajax return is'+data); 

      } 
      }); 

     } 

     }); 

}); 

PHP 코드 :

<?php 
if (isset($_POST["image"]) && !empty($_POST["image"])) { 

    // get the image data 
    $data = $_POST['image']; 

    list($type, $data) = explode(';', $data); 
    list(, $data)  = explode(',', $data); 
    $data = base64_decode($data); 

    //Image name 
    //$filename ="image". md5(uniqid()) . '.png'; 
    $filename ="image". md5(uniqid()) . '.jpg'; 

    $file = "download/".$filename; 

    // decode the image data and save it to file 
    file_put_contents($file,$data); 

    echo "successfully downloaded in folder"; 


} 
?> 
+0

왜 당신이 선언됩니다 도움이된다면 for 루프 내부 ajax 호출이 문제를 살펴, 많은 스레드에서 논의 된 두 번 변수 데이터? –

답변

0

one ajax request만을 사용하여 문제를 피할 수 있습니다. 즉, for 루프가 끝난 후 아약스 전화를 걸고 모든 데이터를 변수 data에 추가 할 때까지 루프를 끝내고 하나만 만듭니다. ajax 전화.

참고 :

http://www.ravenglass.com/blog/index.cfm/2013/3/5/FOR-Loops-Overwriting-Ajax-Responses-and-how-to-fix

Ajax call within jquery each loop

jQuery AJAX solution inside each() loop

+0

이미지 src에 설정하여 ajax를 제거하고 데이터를 확인하면 2 개의 이미지가 생성되지만 모두 동일합니다. 내가 왜 처음 4 이미지가 마지막으로 겹쳐지고 이해가 안되는가 – anam

+0

당신은 4 이미지의 2 세트가 만들어지는 것을 의미하지만, 두 세트가 동일합니까? – gaurav5430

+0

멍청한데 ... 내 포인트 – anam

관련 문제