2014-01-25 4 views
0

아약스 호출에서 PHP 함수에 액세스하려고하는데 처음으로 이런 일을 한 이후로 모든 종류의 문제가 발생했습니다. 기능을 만들거나 내가 가지고있는 것을 고치는 데 도움이 필요합니다.아약스 호출에서 PHP 함수에 액세스하기

이 내가 할 경우

$.ajax({ 
    type  : 'post', 
    url   : 'data.php?action=checkname', 
    data  : {'location':locationName}, 
    error  : function(data,status,error){ 
       console.log(data+': '+status+': '+error); 
      }, 
    success  : function(res){ 
       console.log(res); 
      }     
    }); 

PHP 함수

<?php 
    function checkname(){ <--- What do I pass in the function??? 

     $locations = $_POST['location']; 

     echo $locations; 

    } 
?> 

을 (전체 기능이 질문에 관련이 있기 때문에 나는 단지 그것의 작은 부분을 게시 할 예정입니다) 내 아약스 호출입니다 이 파일을 호출하여 "간단한 방법"과 같은 것을하십시오.

$locations = $_POST['location']; 

echo $locations; 

필자는 필요한 결과를 얻었지만 작성해야하는 모든 아약스 호출에 대해 작은 파일을 갖는 것은 잘못 될 것입니다.

답변

1

당신은 PHP에 대한 설정이이 같은 일을 할 수 있습니다. Switch을 사용하고 ajaxaction의 이름을 지정하고 활성화하려는 Case의 이름을 지정하십시오. 이 방법을 사용하면 동일한 파일을 사용하고 적합하다고 생각되는 다른 기능을 호출 할 수 있습니다. 이미 아약스 전화를했기 때문에

<?php 
      $action = $_POST["action"]; 
      //check if it was sent using $_GET instead of $_POST 
      if(!$action) 
      $action = $_GET["action"]; 

      switch($action){ 
       case 'checkname': 
       checkname(); 
       break; 

       case 'otherfunction': 
       otherfunction(); 
       break; 

      }//switch 


    function checkname(){ 

       $locations = $_POST['location']; 

       echo $locations; 

    } 

    function otherfunction(){ 

       //do something else 

       //echo something; 

    } 
?> 

나는 아약스를 두지 않았다. 아약스의이 부분은 행동에 사용할 이름입니다. data.php?action=checkname 또는 이와 같은 데이터를 사용할 수 있습니다.

var action = 'checkname'; 

$.ajax({ 
    type  : 'post', 
    url   : 'data.php', 
    data  : {'location':locationName,'action':action}, 
    error  : function(data,status,error){ 
       console.log(data+': '+status+': '+error); 
      }, 
    success  : function(res){ 
       console.log(res); 
      }     
    }); 

다른 아약스 기능을 사용하여 호출 할 기능에 대한 변수 동작 만 변경할 수 있습니다.

+0

나는 아직도 당신이 필요한 기능을 확인하는 것 외에도 정보를 기능에 보내는 방법을 보지 못했다. 아니면 아무 것도 보내지 않아도 되는가? – Geo

+0

@Geo 내 업데이트를보고 ajax –

+0

완료! 도와 주셔서 감사합니다 – Geo

0

는이 같은 PHP 컨텐츠를 코딩 할 수 있습니다 :

<?php 
/*this part of code will be executed only when location parameter is set by post, 
thus can send multiple ajax requests to a single file*/ 
    if(isset($_POST['location'] && $_POST['location'] != "") 
    { 
    $location = $_POST['location']; 
    echo checkname($location); 
    } 

function checkname($location) 
{ 
    return $location; 
} 
+0

가 나도이 방법을 생각하지만, 어떤 이유에 이상적 보이지 않았다 때문에 내가 가진 코드의 추가 라인 모든 옵션을 수용하기 위해 작성하려면 – Geo

+0

체크섬과 같은 완전한 아약스 요청에 대한 조건이 하나만있는 경우 해당 아약스의 모든 코드가 정상적으로 처리되거나 친절하게 문제를 명확히합니다. –

1

는 파일에 일부 조건을 추가

$action = isset($_GET['action']) ? $_GET['action'] : null; 

switch($action) { 
    case 'checkname': 
     checkname(); 
    break; 
    case default: 
    // default action 
    break; 
} 
관련 문제