2016-09-11 36 views
1

嗨,我试图在processing.js草图中使用jquery ajax请求和php代码显示图像,但它没有显示图像,我发送到这里的草图是我的JS代码:如何使用jQuery从PHP处理processing.js中显示图像

<script type="text/javascript"> 
    function send() { 
     //var s; 
     function setPath(imgPath) { 
      var s = imgPath; 
      var processingInstance; 
      processingInstance = Processing.getInstanceById('canvas'); 
      processingInstance.change(s); 
     } 
     var variable = 5; 
     $.ajax({ 
      method: "POST", 
      tupe: "POST", 
      url: "take.php", 
      data: ({val: variable}), 
      success: function (data) { 
       setPath(data); 
      }, 

     }); 


    } 
</script> 

这是我的处理代码:

String pic; 
PImage img; 

void setup(){ 
    size(200,200); 
    background(150); 
    img = loadImage(pic); 
} 

void draw(){ 

    image(img,50,50,width/2,height/2); 
} 
void change(String val){ 
    pic = val; 
    println(pic); 

} 

我的PHP代码:

<?php 

if ($_POST) { 
    $temp = $_POST['val']; 
    if ($temp == 5) { 
     $img = "images.jpg"; 
     echo $img; 
    } 
} 
?> 

当我运行代码并在草图中打印结果时,我得到“images.jpg”的结果,但画布上没有显示任何人知道该怎么办?

回答

1

请注意,setup()函数仅在草图开始时调用一次。

pic您的pic变量从无值开始,这就是您传入loadImage()函数的原因。您将返回的值(这可能是一张破碎的图像)存储到您的img变量中。

然后在change()函数中,更新pic变量,但不更新您的img变量。仅仅因为您更改pic变量并不意味着图像会为您重新加载。你必须自己专门做。

它可能是这个样子:

void change(String val){ 
    pic = val; 
    img = loadImage(pic); 
} 

事实上你很可能完全摆脱了pic变量。

请注意,这也需要位于指定路径的图像文件。

+0

是的,谢谢你,我今天再次看到了文档,我看到了它,我只是做了你正在追求的东西,现在就运行了。我还不是一个程序员,但我努力成为某一天,为失败的问题感到抱歉,但有时候像'setup()'开始加载的东西让我整天都在游荡,为什么地狱代码没有运行。再次感谢! –

+0

@MimiChan没问题。你的问题不是愚蠢的,听起来你感觉到每个程序员的感受! –