2014-12-03 106 views
0

我有一個工作的AJAX文件,它將執行PHP文件中的內容。但是,如果php在函數中(PHP文件中有很多PHP函數),我怎樣才能調用我想要的函數。在PHP文件中訪問PHP函數的AJAX函數

我的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> 

回答

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; 
    ... 
} 
+0

你好,你可以參考上面嗎?我遇到了一些問題 – Cael 2014-12-03 07:01:10

+0

沒關係我已經得到了thx – Cael 2014-12-03 07:17:39

0

您需要調用的函數在PHP文件:

附加一個最後一行。

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

PHP解析器怎麼知道你需要執行函數中的代碼。

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'; 
    } 
?> 
+1

開關和外殼可能是更好的代碼。 (見阿馬丹的回答) – rid 2014-12-03 06:35:31

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); 
    } 
}) 
}); 
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 
} 
0

我有3個文件: 1的Javascript 2-admin.php的 3 Class.php(在那裏我存儲我的功能)

在java腳本中,我使用AJAX和JSON以及allways向ADMIN.php發送objectEvent(ObjEvn):

//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)); 
}