我很熟悉如何让ajax去php页面执行一系列事情然后返回json数据。但是,是否可以调用驻留在给定页面中的特定函数?
基本上我想要的是减少项目中的文件数量。所以我可以在一个页面中放置很多常用函数,然后只调用我想要的函数。
答案 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
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';
}
?>
var data = { action: 'function1' };
$.post(ajaxUrl, data, function(response) {
if(response != "") {
$('#SomeElement').html(response);
}else{
alert('Error, Please try again.');
}
});
如前所述:
<块引用>不能直接从 AJAX 调用中调用 PHP 函数