0

Debian 7.0.0 で xhtml、LAMP、jQuery 2.0.2 を使用して開発しています。

次のphp生成要素を使用しています

echo "<img id=\"displayImageID\" src=\"" . $DisplayFileName . "\" alt=\"Background\" style=\"margin:10px 0px 10px 5px\"/>";

使用済みのラジオボタンをクリックすると、別の色のルックアップテーブルに変更したいと考えています。これを行うには、次のコードを使用します

    jQuery.ajax({
    type: "POST",
    url: "DisplayParameters.php",
    data: { LUT:lut }
    }).done(function( result ) {
    $("#msg").html( " Ajax called" );
    });        

DisplayParameters.php の次のコードで

    $LUT=$_POST['LUT'];
    $Executable="Executables/changeLUT";
    $DisplayImageName="images/display.png";
    $Str=$Executable . " -t " . $LUT" . " -o " . $DisplayImageName;

    $output=exec($Str, $dummy, $returnValue);

    echo "<script language=\"JavaScript\">";
    echo "d = new Date();";
    echo "jQuery('#displayImageID').attr('src', '" . $DisplayImageName . "?'+d.getTime());";
    echo "</script>";
}

画像を更新して画像要素に再読み込みしますが、Firefox の「現在のページを再読み込み」でページ全体を更新するまで何も起こりません。

おそらく、Ajax の非同期性により、同じ名前で異なるカラー LUT を持つ新しい画像に置き換えられる前に、画像が読み込まれるのではないかと考えていました。ただし、この場合、ディスクに保存された画像が変更された後もラジオ ボタンをクリックし続けると、最終的に新しい LUT 画像が読み込まれると思います。これはそうではありません。ページをリロードするまで新しい画像が表示されません。

4

1 に答える 1

1

これを試して:

JS

jQuery.ajax({
       type: "POST",
       url: "DisplayParameters.php",
       data: { LUT:lut },
       cache: false                               //CHANGED
}).done(function( result ) {
       $("#msg").html( " Ajax called... and returned " + result );
       //('#displayImageID').attr('src', result);   
       ('#displayImageID').attr('src', result+'?'+$.now());   //CHANGED
});    

PHP

$LUT=$_POST['LUT'];
$Executable="Executables/changeLUT";
$DisplayImageName="images/display.png";
$Str=$Executable . " -t " . $LUT" . " -o " . $DisplayImageName;

$output=exec($Str, $dummy, $returnValue);

echo $DisplayImageName;                         //CHANGED
于 2013-06-25T01:55:06.673 に答える