2014-06-13 5 views
0

AJAX를 사용하여 PHP 함수를 호출하려고합니다. 스택 오버플로 (대용량으로 표시)에 대한 솔루션을 확인했지만 여전히 작동하지 않습니다. PHP 코드와 JavaScript/jQuery/AJAX 코드는 모두 같은 파일에 있습니다.AJAX를 사용하여 JavaScript에서 PHP 함수 호출

다음은 원하는 결과를 얻기 위해 작성한 코드입니다. 두 PHP 파일은 내가 호출해야하는 PHP 함수와 아무 관련이 없으므로 게시하지 않았습니다.

(참고 : ExecuteAll() 함수가 호출하지만, 아무것도 AJAX 코드/후에 발생하지됩니다)

<input type="button" value="Show all client data" id="all"> 

<? 
include('inc/php/stringgenerator.php'); 
include('inc/php/client.php'); 

$generator = new StringGenerator; 

$clients = array(); 

for($i = 0; $i < 250; $i++){ 
    $clients[$i] = new Client; 
    $clients[$i]->SetId($i); 
    $clients[$i]->SetAddress($generator->GetGeneratedString(rand(12, 24))); 
    $clients[$i]->SetNotes("Notes for client " . $i); 

    $scores = array(); 
    for($j = 0; $j < 25; $j++)$scores[$j] = rand(0, 10); 
    $clients[$i]->SetScores($scores); 
}  

echo "Clients generated"; 
?> 
<? 
switch($_POST["functionname"]){ 
    case 'DisplayAllClientData': 
     DisplayAllClientData(); 
     break; 
}; 

function DisplayAllClientData(){ 
    for($i = 0; $i < count($clients); $i++){ 
     $clients[$i]->PrintClientData(); 
     echo "<hr>"; 
    } 
} 
?> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

<script type="text/javascript" language="javascript"> 
$(document).ready(function(){ 
    $("#all").click(function(){ ExecuteAll(); }); 
}); 

function ExecuteAll(){ 
    $.ajax({ 
     type: "POST", 
     url: 'index.php', 
     data: {functionname: 'DisplayAllClientData'}, 
     succes:function(){ 
      alert("Success!"); 
     } 
    }); 
} 
</script> 

답변

1

이 시도 : JS에서

: 다음

function ExecuteAll(){ 
    $.ajax({ 
     type: "POST", 
     url: 'index.php', 
     data: {command: 'all_client_data'}, 
     succes:function(){ 
      alert("Success!"); 
     } 
    }); 
} 

PHP에서 DisplayAllClientData() 함수를 선언 한 후 다음을 수행하십시오.

if ($_POST['command'] == 'all_client_data') [ 
    DisplayAllClientData(); 
} 

그 라인을 따라 뭔가가 작동합니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 나는이 일을 아침에 시도 할 것이다. – Nick

+0

문제가 없습니다. 위 표결이 아프지 않을 것입니다.) – hanleyhansen

+0

윌, upvote tho에 한 번 더 담당자가 필요합니다 : ( – Nick