參數我有一個PHP文件func.php
在那裏我定義了許多功能,讓我們說:調用PHP函數使用jQuery
<? php
function func1($data){
return $data+1;
}
?>
我想用AJAX致電function func1
。感謝您的幫助
參數我有一個PHP文件func.php
在那裏我定義了許多功能,讓我們說:調用PHP函數使用jQuery
<? php
function func1($data){
return $data+1;
}
?>
我想用AJAX致電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); }
});
您應該通過一個Ajax請求調用PHP腳本,使用jquery,如:
的Javascript:
$.ajax({
url: "script.php",
data: { param1: "value1", param2: "value2" },
type: "GET",
context: document.body
}).done(function() {
// your code goes here
});
你可以通過AJAX對象的數據屬性給你的參數。
腓
// you can do isset check before
$param1 = $_GET['param1'];
$param2 = $_GET['param2'];
// validate // sanitize // save to db // blah blah // do something with params
的更多信息,你可以從jQiery.ajax()函數的描述得到http://api.jquery.com/jQuery.ajax/
那麼,這將參數發送到PHP腳本,但是如何將它們饋送到該腳本中的PHP函數? – Steve
好的史蒂夫。真正。發佈編輯。 –
它更復雜一點,但我會盡量縮小下來的基礎。
你將需要調用者和腳本之間的某種接口(基本上是一種約定)。這裏主要關注兩個問題:
腳本理解需要調用哪些內容以及使用哪些參數。假設您決定使用GET
請求來調用函數。函數名稱可以在func
字段中,參數爲args
之一,作爲由;
分隔的字符串。換言之,致電funcFoo(5,'bar')
將通過請求func.php?func=func1&args=5;bar
完成。
調用方接收(並理解)返回值的方式。由於您的要求是面向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來傳遞一些價值,然後你的PHP腳本會選擇這個值,然後用.... switch語句運行所需的函數。 – Crackertastic
所有的功能都接受一個參數嗎? – geomagas
@geomagas,no我有超過一個參數的函數 –