2013-03-13 3 views
0

캔버스는 xmlhttpresponse에서 전달 된 값을 가져올 수 없습니다. 코딩 문제가 있습니까? 캔버스를 잘못된 순서로 배치합니까? 다음은 내가 사용한 코드입니다.xmlhttp에서 canvas로 값 전달

<script> 
function loadXMLDoc() 
{ 
str="GT299.842.65.416 2002"; 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() 
{ 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
var result=xmlhttp.responseText; 
var n=result.split(" "); 
var c=document.getElementById("myCanvas"); 
var ctx=c.getContext("2d"); 
ctx.moveTo(0,0); 
ctx.lineTo(n[0],n[1]); 
ctx.stroke(); 
} 
} 
xmlhttp.open("GET","gethint.php?q="+str,true); 
xmlhttp.send(); 
} 
</script> 
</head> 
<body> 

<button type="button" onclick="loadXMLDoc()">Change Content</button> 
<div id="myDiv"></div> 
<canvas id="myCanvas" width="400" height="400" style="border:1px solid #d3d3d3;"> 
</body> 
+0

N [0] N [1] 무엇이 포함되어 있습니까를? –

+0

정수가 포함되어 있습니다. – helloeveryone

답변

0

GET 및 분석 XMLHttpRequest를

[편집 : 컨텍스트 그리기 코드를 정리]

먼저 캔버스 그리기 코드에 ctx.beginPath()를 추가해야합니다 :

012 :

ctx.beginPath(); // required for all line,curve,arc,path draws 
ctx.moveTo(0,0); 
ctx.lineTo(n[0],n[1]); 
ctx.stroke(); 

이 같은 XML 파일 (myLineXYs.xml)가 있다고 가정 3,516,

<?xml version="1.0" encoding="ISO-8859-1"?> 
<lineXYs> 
    <line="0"> 
     <X>50</X> 
     <Y>25</Y> 
    </line> 
    <line="1"> 
     <X>100</X> 
     <Y>25</Y> 
    </line> 
</lineXYs> 

당신은 GET과 같은 2 개 라인의 X/Y 구문 분석합니다 :

// IE--there you go again being different! 
if (window.XMLHttpRequest) 
    { xhttp=new XMLHttpRequest(); } 
else 
    { xhttp=new ActiveXObject("Microsoft.XMLHTTP"); } 

// GET myLineXYs.xml 
xhttp.open("GET","myLineXYs.xml",false); 
xhttp.send(); 
xmlDoc=xhttp.responseXML; 

// Parse out the X/Y for the 2 lines 
var x0=xmlDoc.getElementsByTagName("X")[0].childNodes[0].nodeValue 
var y0=xmlDoc.getElementsByTagName("Y")[0].childNodes[0].nodeValue 

var x1=xmlDoc.getElementsByTagName("X")[1].childNodes[0].nodeValue 
var y1=xmlDoc.getElementsByTagName("Y")[1].childNodes[0].nodeValue 
+0

PHP에서 varible로 값 전달을 받았습니다. 그러나 캔버스'ctx.lineTo (n [0], n [1])'은 선이 그려지지 않는 경우 작동하지 않습니다. – helloeveryone

+0

예, 수정 된 답변을 확인하십시오. 선, 호, 곡선, 패스 등을 그리기 전에 ctx.beginPath()를 추가해야합니다. 용서하십시오. XMLHttpRequest를 통해 값을 가져 오는 것에 대해 묻는 것으로 생각하고 코드의 다른 부분을 검토하는 것을 잊었습니다. – markE