2011-10-21 3 views
2

PHP GDで作成された私の* .png画像がWebページに正しく表示されないのはなぜですか?POSTでjqueryしてからGDを表示するPHP

back.php

<?php 
    $height = 200; 
    $width = 600; 
    $jVar = $_POST['jPacket']; //velue from jQuery script 

    $im = imagecreatetruecolor($width, $height); 
    $white = imagecolorallocate($im, 255, 255, 255); 
    $black = imagecolorallocate($im, 0, 0, 0); 
    imagefill($im, 0, 0, $white); 
//line_1 
    imageline($im, 10, 0, 10, $height, $black); 
//line_2 
    imageline($im, $jVar, ($height/2), $height-$jVar, ($height/2), $black); 

    header('Content-type: image/png'); 
    imagepng($im); 
    imagedestroy($im); 
?> 

...とシンプルなjQueryのAJAXポストはここにある:: 私のPHPコードがある

script.js

var graphBack = $('<img id="backGraph" src="back.php" alt="backGraph"/>'); 

$('.value').keyup(function() { 
     $.post(
      "back.php", //send the POST here 
     { 
      jPacket: $('.value').val() //value from <input> 
     }, function() { 
      $('#backGraph').remove(); //remove old picture 
      graphBack.insertAfter($('#sipGraph p')); //put the picture here 
     }); 

画像は正しく表示されますが、すべてが表示されるわけではありません。 imageline(...)のすべての要素は静的ですが、'imageline(..., $jVar, ...)にはscipt.jsから$_POST['jPacket']によって送信される値があるため、 'line_2'は表示されないため、 'line_1'が表示されます。 graphBack.insertAfter($('#sipGraph p'));にIMGが正しく表示されていますか?

私はscanario上で実行するが、データがないjQueryのから送信されるが、通常のHTMLのFORMのすべてがOKの場合...あなたが送信している

答えて

1

ポストは、ページ上に表示されているものではありません。ページにvar graphBack = $('<img id="backGraph" src="back.php" alt="backGraph"/>');を添付すると、ポストなしの別の2番目のリクエストが作成されます。これは基本的にページにイメージをロードします。 Backは本質的に2回呼び出されており、POSTの時刻はあなたが表示している応答ではありません。

私は代わりに、$('<img id="backGraph" src="back.php?jPacket='+ MYAWESOMEJPACKET +'" alt="backGraph"/>');の行に沿って生成されたイメージタグを付け加え、現在のものを置き換えて、GETを使用するようにスクリプトをさらに更新します。

+0

hmm ...私は自宅でこれをやろうとしますが、私のjs: '}、function(DATA){ 'のようなものでなければならないかと思います。 ** back.php **スクリプトは何らかのデータに応答します。だから、おそらく問題は私がスクリプトに適切に入れないということです。 – kamh

関連する問題