2012-04-20 2 views
0

내가 PHP와 자바 스크립트를 혼합 할 수 없다는 것을 알았 기 때문에 AJAX를 배웠다. 아래 코드에서 ajax 함수는 getcount.php 페이지에서 값을 가져 와서 호출자 함수로 반환하려고합니다. 아래 코드는 작동하지 않습니다. 실수는 어디 있습니까?Ajax와 Javascript를 섞기

<script type="text/javascript"> 
function getcount(day) 
{ 
var xmlhttp; 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

xmlhttp.open("GET","getcount.php?"+day,true); 
xmlhttp.send(); 

xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    return xmlhttp.responseText; 
    } 
} 
</script> 

<script type="text/javascript"> 
$(function() { 
var previousPoint; 

var d1 = []; 
for (var i = 0; i <= 10; i += 1) 
     d1.push([i, getcount(i)]); 
    . 
    . 
    . 
+1

도움을 docs 참조 : AJAX 당신은 getcount 함수의 끝에 닫는}를 놓치고있어 자바 스크립트 – fmgp

+0

입니다. 일관된 코드 들여 쓰기를 유지하려고하면, 그런 종류의 것이 명백합니다. :) – Armatus

+0

나는 덧붙였다. 그러나 .... –

답변

3

아약스 콜백 그래서, getcount() 정의되지 않은 반환됩니다 비동기되며 콜백이 반환 할 때 그것이 무엇이든

function getcount(day, arr) { 
var xmlhttp; 
... 
xmlhttp.send(); 

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
    arr.push([day, xmlhttp.responseText]); 
    } 
} 
$(function() { 
var previousPoint; 

var d1 = []; 
for (var i = 0; i <= 10; i += 1) 
    getcount(i, d1); 
... 
1

사용 jQuery를 할당되지 않은, 그것은 훨씬 쉬울 것이다 :

<script type="text/javascript"> 
    $(function() { 
    var previousPoint, d1 = []; 

    var getCount = function(day){ 
    $.get("getcount.php?"+day, function(data){ 
     d1.push([day, data]); 
    }); 
    } 

    for (var i = 0; i <= 10; i += 1) 
    getcount(i) 
}); 
</script> 
+0

그는 그의 질문에 답하지 않고 뻔뻔한 플러그처럼 느낀다. : [ – Snuffleupagus

0
Try using Jquery ajax which is very easier for maintenance and debugging. Here is a sample 
ajax code 

$.ajax({ 
type: 'POST', // can be get also 
url: 'yourpage.php', // change name 
data: id, // some data if u need to pass 
success: function(data) { // returns date 
     $('.result').html(data); // result 
} 
}); 

For details http://api.jquery.com/jQuery.ajax/ 

Thanks. 
1

모든 종류의 Ajax 쿼리와 이러한 유형의 루프를 혼합하는 것은 좋은 생각이 아닙니다. 이미 언급했듯이 Ajax 요청이 비동기이기 때문에 흥미로운 경쟁 조건이 생길 수 있습니다.

단일 아약스 요청을 수행하고 PHP에서 루프를 처리 한 다음 단일 배열을 반환하는 것이 좋습니다. 그러나, 다시 한번 말하지만, 당신이 기본적으로 이해해야 할 중요한 것은, 절차상의 자바 스크립트 코드는 Ajax 메소드가 돌아 오기를 기다리지 않는다는 것이다.

당신의 제목이 조금 이상한