programing

에이잭스에서 php 함수를 어떻게 호출합니까?

stoneblock 2023. 7. 28. 21:46

에이잭스에서 php 함수를 어떻게 호출합니까?

저는 에이잭스가 php 페이지로 가서 일련의 일들을 실행한 다음 json 데이터를 반환하도록 하는 방법에 대해 잘 알고 있습니다.하지만 주어진 페이지에 있는 특정 기능을 호출하는 것이 가능합니까?

기본적으로 제가 원하는 것은 프로젝트의 파일 수를 줄이는 것입니다.그래서 저는 한 페이지에 많은 공통적인 기능들을 넣을 수 있고, 그 다음에는 제가 원하는 기능을 호출할 수 있습니다.

AJAX 요청의 경우

  1. 웹 페이지에 jQuery 라이브러리를 포함합니다.예를 들어.

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    
  2. 버튼 클릭 시 함수 호출

    <button type="button" onclick="create()">Click Me</button>
    
  3. 버튼을 클릭하는 동안 자바스크립트로 작성 기능을 호출합니다.

    <script>
        function create () {
            $.ajax({
                url:"test.php",    //the page containing php script
                type: "post",    //request type,
                dataType: 'json',
                data: {registration: "success", name: "xyz", email: "abc@gmail.com"},
                success:function(result){
                    console.log(result.abc);
                }
            });
        }
    </script>
    

서버 측 test.php 파일에서 action POST 매개 변수를 읽고 해당 값을 읽고 PHP로 action을 수행한 후 JSON 형식으로 반환해야 합니다.

$registration = $_POST['registration'];
$name= $_POST['name'];
$email= $_POST['email'];

if ($registration == "success"){
    // some action goes here under php
    echo json_encode(array("abc"=>'successfuly registered'));
}     

AJAX 요청에서 직접 PHP 함수를 호출할 수는 없지만 대신 이 작업을 수행할 수 있습니다.

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

    if (isset($_POST['callFunc1'])) {
        echo test($_POST['callFunc1']);
    }
?>
<script>
    $.ajax({
        url: 'myFunctions.php',
        type: 'post',
        data: { "callFunc1": "1"},
        success: function(response) { console.log(response); }
    });
</script>

이러한 목적을 위한 구조로서, 저는 다음을 제안합니다.

PHP

<?php
    if(isset($_POST['action'])){
        if ($_POST['action'] == "function1") { func1(); }
        if ($_POST['action'] == "function2") { func2(); }
        if ($_POST['action'] == "function3") { func3(); }
        if ($_POST['action'] == "function4") { func4(); }
    }

    function func1(){
        //Do something here
        echo 'test';
    }
?>

jQuery

var data = { action: 'function1' };

$.post(ajaxUrl, data, function(response) {
    if(response != "") {
        $('#SomeElement').html(response);
    }else{
        alert('Error, Please try again.');
    }
});

언급했듯이, 당신은 AJAX 호출에서 직접 PHP 함수를 호출할 수 없습니다.

제가 정확히 이해했다면, 네, 가능합니다.당신의 모든 기능을 하나의 php 파일에 넣고 당신이 호출하고 싶은 매개 변수로 에이잭스를 통과시키세요.그런 다음 스위치 또는 if 구조를 사용하여 원하는 것을 실행합니다.

jquery:

$(document).ready(function(){
    $('#tfa_1117700').change(function(){
        var inputValue = $(this).val();
        var v_token = "{{csrf_token()}}";
        $.post(
            "{{url('/each-child')}}",
            { dropdownValue: inputValue,_token:v_token },
            function(data){
                console.log(data);
                $('#each-child-html').html(data);
            }
        );
    });
});

php:

public function EachChild(Request $request)
{
    $html ="";
    for ($i=1; $i <= $request->dropdownValue; $i++)
    { 
        $html = $i;
    }
    echo $html;
}

언급URL : https://stackoverflow.com/questions/39341901/how-to-call-a-php-function-from-ajax