0

我想弄清楚的是如何在完全处理 php 脚本后在 iframe 中打开链接(使用颜色框)。我需要在 php 脚本之后加载链接的原因是在 php 脚本中,我从页面上的画布元素生成了一个 png 图像。然后将该图像用作后续页面上的图像。

我遇到的问题是,如果链接在完成图像保存脚本之前打开,则链接将无法正常运行(即图像不会出现(第一次点击)或最后保存的图像将出现而不是预期的图像) .

我在页面上使用 Jquery 和 Colorbox。javascript 将变量传递给 php,php 将它们存储在会话中。

我在主页上的 HTML 如下:

<script>
    $(document).ready(function(){
        $(".share").colorbox({iframe:true, width:"80%", height:"80%"});
    });
</script>
    <canvas id="YourYogaMatCanvas"  width="888" height="288" >Your browser does not support the HTML5 canvas tag.</canvas><br/>
    <a href="featureshare" class="share" id="sharing" onclick="savetoserver();">Share Your Creation Now</a><br/><br/>

JavaScript:

function savetoserver() {
    canvas = document.getElementById('YourYogaMatCanvas');

    var dataURL = canvas.toDataURL();
    var dataURL2 = canvas.toDataURL();

    do {
    dataURL = canvas.toDataURL();
    dataURL2 = canvas.toDataURL();
        $.ajax({
          type: "POST",
          url: "featureimagesave.php",
          data: {
            imgBase64: dataURL,
            yogatextcolor: txtcolorsel,
            yogamatcolor: selmatcolor,
            prefile: prefile,
            name: matname,
            price: priceCalc
          },
        });
    }while (dataURL != dataURL2);
}

PHP 功能图像保存:

<?php
    session_start();

    // requires php5
    define('UPLOAD_DIR', 'images/users/');
    $img = $_POST['imgBase64'];
    $img = str_replace('data:image/png;base64,', '', $img);
    $img = str_replace(' ', '+', $img);
    $data = base64_decode($img);
    $filename = uniqid();
    $file = UPLOAD_DIR . $filename . '.png';

    $success = file_put_contents($file, $data);

    $_SESSION['file'] = $filename;
    $_SESSION['textcolor']  = $_POST['yogatextcolor'];
    $_SESSION['matcolor']  = $_POST['yogamatcolor'];
    $_SESSION['featurefile']  = $_POST['prefile'];
    $_SESSION['name']  = $_POST['name'];
    $_SESSION['price']  = $_POST['price'];
?>

在功能共享页面的 HTML 中,$Session 变量文件用于引用图像,如下所示:

<?php  
    echo '<div id="uimage"><img id="userimage" src="images/users/'.$_SESSION['file'].'.png"> </div>';
?>

任何帮助或如何使这项工作的想法将不胜感激。我确实在 HTML 标记之前的每个页面上都开始了会话。

4

1 回答 1

1

为什么不尝试类似 ajax 请求的 done 功能,例如:

$.ajax({
      type: "POST",
      url: "featureimagesave.php",
      data: {
        imgBase64: dataURL,
        yogatextcolor: txtcolorsel,
        yogamatcolor: selmatcolor,
        prefile: prefile,
        name: matname,
        price: priceCalc
      },
  }).done(function ( data ) {
       //do your colorbox logic
  });

这是 jQuery 的承诺回调和我认为从 jQuery 1.5 开始的工作,有关更多信息,您可以查看 jquery 的 API http://api.jquery.com/jQuery.ajax/

于 2013-09-11T20:23:50.633 回答