programing

Jquery를 사용하여 인수가 있는 php 함수 호출

mailnote 2023. 8. 24. 22:24
반응형

Jquery를 사용하여 인수가 있는 php 함수 호출

저는 php 파일을 가지고 있습니다.func.php여기서 많은 함수를 정의했습니다.

<? php 
function func1($data){
return $data+1;
}
?>

전화하고 싶습니다.function func1아약스를 사용합니다. 도와주셔서 감사합니다.

AJAX 호출에서 직접 PHP 함수를 호출할 수는 없지만 다음과 같은 작업을 수행할 수 있습니다.

PHP:

<? php 
    function func1($data){
        return $data+1;
    }

    if (isset($_POST['callFunc1'])) {
        echo func1($_POST['callFunc1']);
    }
?>

JS:

$.ajax({
    url: 'myFunctions.php',
    type: 'post',
    data: { "callFunc1": "1"},
    success: function(response) { alert(response); }
});

다음과 같이 jQuery를 사용하여 php 스크립트를 Ajax 요청을 통해 호출해야 합니다.

Javascript:

$.ajax({
  url: "script.php",
  data: { param1: "value1", param2: "value2" },
  type: "GET",
  context: document.body
}).done(function() {
  // your code goes here
});

Ajax 개체의 데이터 속성을 통해 매개 변수를 지정할 수 있습니다.

php

// you can do isset check before 
$param1 = $_GET['param1'];
$param2 = $_GET['param2'];

// validate // sanitize // save to db // blah blah // do something with params

자세한 내용은 http://api.jquery.com/jQuery.ajax/ 에서 jQuery.ajax() 함수 설명을 참조하십시오.

조금 더 복잡하지만, 기본적인 것으로 줄여보겠습니다.

호출자와 스크립트 사이에 일종의 인터페이스(기본적으로 규약)가 필요합니다.여기서 주요 관심사는 두 가지입니다.

  1. 스크립트가 호출할 내용과 인수를 이해하는 방식입니다.예를 들어 다음을 사용하기로 결정했다고 가정합니다.GET함수 호출 요청입니다.함수 이름은 다음과 같을 수 있습니다.func필드 및 인수args하나, 으로 구분된 문자열로서.;다시 말해서, 전화하는 것.funcFoo(5,'bar')요청하면 됩니다.func.php?func=func1&args=5;bar.

  2. 호출자가 반환 값을 수신하고 이해하는 방식입니다.당신의 요구사항은 JS 지향적이기 때문에 JSON 접근법이 매우 적절할 수 있습니다.

기능과 함께 다음 코드를 추가합니다.

if(isset($_GET['func']))
  {
  $func=$_GET['func'];
  if(function_exists($func))
    {
    $args=(isset($_GET['args'])?explode(';',$_GET['args']):array());
    $result=call_user_func_array($func,$args);
    }
  else
    $result=array('error'=>"Unknown Function $func!");
  }
else
  $result=array('error'=>"No function name provided!");
echo json_encode($result);

그러나 새로운 요구 사항을 충족하기 위해 기능도 변경해야 합니다.호출자가 얼마나 많은 인수를 제공할 것인지 알 수 있는 방법이 없기 때문에, 함수는 필수 인수를 수락하지 않고 제공된 인수 자체를 확인하도록 설계되어야 합니다.또한, 다음과 같이 하려면 항상 배열을 반환해야 합니다.json_encode발신자에게 반환되기 전에 d.

예를 들어, 예제 함수는 다음과 같이 표시되어야 합니다.

function func1(){
    $data=func_get_args();
    if(count($data)) // at least one -- rest will be ignored
      return $data[0]+1;
    else
      return array('error'=>__FUNCTION__."() expects an argument!");
}

그러나 주의할 점은 다음과 같습니다.이것은 전체 개념을 시작하기 위한 뼈대일 뿐입니다.내결함성보안 모두에 대해 훨씬 더 많은 주의를 기울여야 합니다.하지만 그것은 다른 주제입니다.

네, 할 수 있어요!

여기 내 코드:

     $.ajax({
        type: "POST",
        url: "ajax.php",
        data: { kode: $(this).val(), func: 'my_func' },

        success: function(response) {
            //any success method here
        }
    });

그리고 여기서 호출할 함수를 수신하는 php의 코드.

$post = (object) $_POST;
if(!$post)
    return false;

$func = $post->func;
return $func($post);

function my_func($post) {    

    $json['any_data'] = false;

    if($post->kode == 'ND'){               
        $json['any_data'] = 'ND-'.date('Y');
    }

    echo json_encode($json);

}

그게 도움이 되길 바래, 형제... :D.

언급URL : https://stackoverflow.com/questions/19457612/call-php-function-with-arguments-using-jquery

반응형