如何从ajax调用php函数?

时间:2016-09-06 06:24:17

标签: php ajax

我很熟悉如何让ajax去php页面执行一系列事情然后返回json数据。但是,是否可以调用驻留在给定页面中的特定函数?

基本上我想要的是减少项目中的文件数量。所以我可以在一个页面中放置很多常用函数,然后只调用我想要的函数。

5 个答案:

答案 0 :(得分:15)

对于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.点击按钮,在javascript中调用create function。

    <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文件中,应该读取操作POST参数和相应的值并在php中执行操作并以json格式返回,例如。

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

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

答案 1 :(得分:8)

您无法直接从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>

答案 2 :(得分:1)

    $(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);
                });
            });
        });



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

        }

答案 3 :(得分:0)

如果我理解正确,是的,你可以。 将所有函数放在一个php文件中,并将ajax传递为您要调用的参数。然后使用switch或if结构,执行你想要的那个。

答案 4 :(得分:0)

作为这种目的的结构,我建议这样做:

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 函数