2012-03-11 6 views
0

나는 아래의 스크립트를 사용하여 이미지를 생성하고 아약스와 div를 통해 표시하지만 PHP 이미지 헤더는 읽지 않고 이미지 대신 표시됩니다. 이미지 소스 코드 모든 아이디어가 이미지로 헤더를 읽는 PHP를 강제하는 방법?PHP와 AJAX 이미지 헤더를 읽을 수 없습니다.

<?php 
header('Content-Type: image/jpeg'); // JPG picture 
$root = $_SERVER['DOCUMENT_ROOT']; 
require("$root/include/mysqldb.php");      //mysql login details 
require("$root/include/mysql_connect.php");    //mysql connect 

if(!empty($small)) { $size = "50"; $folder = "thumnail_user_images"; } else { $size = "250"; $folder = "large_user_images"; } 



$dice_image = $_GET["image"]; 

if (!file_exists("$root/$folder/$dice_image")) 
{ 
    require("$root/include/image_resizing_function.php");  //create image 
    $image = new SimpleImage(); 
    $image->load("$root/raw_user_images/$dice_image"); 
    $image->resizeToWidth($size); 
    $image->save("$root/$folder/$dice_image"); 
    $image->output(); 


} 

else { 


readfile("$root/$folder/$dice_image"); 


} 

그리고이 이미지를 교체하기 위해 아약스에게 사용할 수 있습니다 :

<script type="text/javascript"> 

var bustcachevar=1 
var loadedobjects="" 
var rootdomain="https://"+window.location.hostname 
var bustcacheparameter="" 

function ajaxpage(url, containerid){ 
var page_request = false 
if (window.XMLHttpRequest) 
page_request = new XMLHttpRequest() 
else if (window.ActiveXObject){ 
try { 
page_request = new ActiveXObject("Msxml2.XMLHTTP") 
} 
catch (e){ 
try{ 
page_request = new ActiveXObject("Microsoft.XMLHTTP") 
} 
catch (e){} 
} 
} 
else 
return false 
page_request.onreadystatechange=function(){ 
loadpage(page_request, containerid) 
} 
if (bustcachevar) 
bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime() 
page_request.open('GET', url+bustcacheparameter, true) 
page_request.send(null) 
} 

function loadpage(page_request, containerid){ 
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)) 
document.getElementById(containerid).innerHTML=page_request.responseText 
} 

function loadobjs(){ 
if (!document.getElementById) 
return 
for (i=0; i<arguments.length; i++){ 
var file=arguments[i] 
var fileref="" 
if (loadedobjects.indexOf(file)==-1){ 
if (file.indexOf(".js")!=-1){ 
fileref=document.createElement('script') 
fileref.setAttribute("type","text/javascript"); 
fileref.setAttribute("src", file); 
} 
else if (file.indexOf(".css")!=-1){ 
fileref=document.createElement("link") 
fileref.setAttribute("rel", "stylesheet"); 
fileref.setAttribute("type", "text/css"); 
fileref.setAttribute("href", file); 
} 
} 
if (fileref!=""){ 
document.getElementsByTagName("head").item(0).appendChild(fileref) 
loadedobjects+=file+" " 
} 
} 
} 

</script> 
+0

PHP 처리기의 URL을 브라우저에 직접 입력하십시오. 브라우저에 이미지가 표시되면 이미지 핸들러가 올바르게 작동합니다. 그런 다음 JavaScript에 오류가 있습니다. 또한 일반적인 JavaScript 프레임 워크 중 하나를 사용하는 것이 좋습니다. 이렇게하면 비동기 호출의 코드에서 잠재적 인 오류를 피할 수 있고 잘 테스트 된 프레임 워크에 의존 할 수 있습니다. – CodeZombie

답변

1

여분의 공백이 문을 필요에 의해 참조되는 PHP 파일에서 닫는 ?> 후가 없습니다 있는지 확인합니다. 그 문제가 있었고 답을 찾기 전에 며칠 동안 머리를 긁적 거리고있었습니다.