AJAX函数在PHP文件中访问PHP函数

时间:2014-12-03 06:28:03

标签: javascript php ajax

我有一个可以在PHP文件中执行内容的工作AJAX文件。但是,如果php在函数内(PHP文件中有很多php函数),我该如何只调用我想要的函数。

我的AJAX代码:

$(document).ready(function(){

// use ajax, call the PHP
$.ajax({
    url: 'postme.php', 
    success: function(response){
        $('.result_Postme').text(response);
    }
})
});

postme.php PHP文件中的一个函数:

<?php 
  function echo()
  {
    echo 'Text';
  }
?>

感谢。

编辑:

@Amadan嗨,我试过你的方法,但似乎没有在html输出。

我的AjAx代码:

$(document).ready(function(){

// use ajax, call the PHP
$.ajax({
    url: 'rank.php', 
    data: {
        action: 'echo'
    },
    success: function(response){
        $('.rank_Alibaba').text(response);
    }
})
});

PHP文件

switch($_REQUEST['action']) 
{
 case 'echo': 
 echo "text";
 break;
 }

HTML:

 <td class="rank_Alibaba"></td>

6 个答案:

答案 0 :(得分:0)

您需要在PHP文件中调用该函数:

最后添加一行。

   <?php 
    function yourFunc() {
      echo 'Text';
    }
    yourFunc()
    ?>

为什么PHP解析器知道你需要从函数中执行代码。

答案 1 :(得分:0)

a)使用MVC框架,例如Laravel或CakePHP。无论您是否想要这些框架,这些框架都非常自以为是,并会强制您采用最佳实践。 :P

b)如果你绝对想要坚持使用普通的PHP,最简单的方法是传递一个参数来选择你的函数,然后在你的PHP文件中对该参数有一个switch语句来调度这个调用到了正确的地方。例如,在JavaScript中:

...
url: 'postme.php', 
data: {
  action: 'echo'
},
...

在PHP中:

switch($_REQUEST['action']) {
  case 'echo':
    echo();
    break;
  ...
}

答案 2 :(得分:0)

你不能通过javascript直接调用php函数。你能做的就像是“调度员”。

$(document).ready(function(){

    // use ajax, call the PHP
    $.ajax({
        url: 'postme.php', 
        data: { func: "echo" }
        success: function(response){
            $('.result_Postme').text(response);
        }
    })
});

并在php中:

<?php 
  if($_REQUEST["func"] == "echo") {
    echo();
  } elseif(....) {

  }

  function echo()
  {
    echo 'Text';
  }
?>

答案 3 :(得分:0)

您必须根据输入查询控制php行为。

将此添加到您的php脚本中,可能正常工作(只是一个示例):

<?php 
  if(isset($_GET['action']) && $_GET['action']) == 'echo'){
    echo();
  }else{
    // original behaviour
  }
  function echo()
  {
    echo 'Text';
  }
  // whatever function else
?>

将您的javascript更改为:

$(document).ready(function(){

// use ajax, call the PHP
$.ajax({
    url: 'postme.php?action=echo', 
    success: function(response){
        $('.result_Postme').text(response);
    }
})
});

答案 4 :(得分:0)

您甚至可以像这样使用$_GET var。

$.ajax({
    url: './inc/postme.php?argument=myFunction',
    type: 'POST',
    data: selected
    success: function(response){
        $('.result_Postme').text(response);
    }
});

并在php方面:

if($_GET['argument'] == 'myFunction'){
    //code here
}

答案 5 :(得分:0)

我有3个文件: 1,使用Javascript 2- admin.php的 3-Class.php(我存储我的函数)

在java脚本中我使用AJAX和JSON,并且总是将一个objectEvent(ObjEvn)发送到ADMIN.php:

    //Your javaScript code
    $(document).on("event", "#idElement", function(){
        //Data you want to send to php evaluate
         var dt={ 
                  ObjEvn:"btn_Login",//This is the controller to ADMIN.php
                  dataJsToPHP: $("#txt_EmailLogin").val(),
                  asManyasYouWant: use jQuery to grab values....
                };

        //Ajax      
         var request =$.ajax({//http://api.jquery.com/jQuery.ajax/
                                url: "ADMIN.php",
                                type: "POST",
                                data: dt,
                                dataType: "json"  
                            });

        //Ajax Done catch JSON from PHP 
            request.done(function(dataset){
                for (var index in dataset){ 
                     dataPHPtoJsJS=dataset[index].dataPHPtoJs;
                     asManyasYouWantJS=dataset[index].asYouWant;
                 }

                 //JavaScript conditions. Here you can control the behaivior of your //html object, based on your PHP response
                 if(dataPHPtoJsJS){
                    $( "#idYourHtmlElement" ).removeClass( "class1" )
                    $( "#idYourHtmlElement" ).addClass( "class2" )
                 }


         }); 

        //Ajax Fail 
            request.fail(function(jqXHR, textStatus) {
                alert("Request failed: " + textStatus);
            }); 
    }

现在在ADMIN.php中

$ObjEvn=$_POST["ObjEvn"];//Call this before all test
$asManyasYouWant = $_POST["asManyasYouWant "];

if($ObjEvn==="btn_Login"){
$login=$_POST["login"];
$passwd=$_POST["passwd"];
//call your function to test login in class.php
//finally, at the end, return your result to jquery. It could be another jquery code to //be loaded dynamiclly, it could be a html tag, it could be a value... it could be almost //everyting..
$arrToJSON = array(
        "dataPHPtoJs"=>"yourData",
        "asYouWant"=>"<div class=\".class1\">soemting</div>"    
        );  
        return json_encode(array($arrToJSON));
}
elseif($ObjEvn==="btn_NewUser"){
//retrieve anoter values
//and call your functions to create new user
//finally, at the end, return your result to jquery. It could be another jquery code to //be loaded dynamiclly, it could be a html tag, it could be a value... it could be almost //everyting..
$arrToJSON = array(
        "dataPHPtoJs"=>"yourData",
        "asYouWant"=>"<div class=\".class1\">soemting</div>"    
        );  
        return json_encode(array($arrToJSON));
}