希望我能正确地问这个问题,因为我知道我想要它做什么,但似乎无法从搜索中找到任何答案。
我有一个 func.php 页面,其中我有我所有的函数,我希望 ajax 使用该页面中的一个函数。
功能.php
function toptable()
{
echo"something happens in here";
}
索引.php
<?php include 'func.php'; ?>
<script type="text/javascript">
function check_username() {
uname=document.getElementById("username").value;
var params = "user_id="+uname;
var url = "topoftable()";
$.ajax({
type: 'POST',
url: url,
dataType: 'html',
data: params,
beforeSend: function() {
document.getElementById("right").innerHTML= 'checking' ;
},
complete: function() {
},
success: function(html) {
document.getElementById("right").innerHTML= html ;
}
});
}
</script>
有意义?
它不是那样工作的。
您的 AJAX 请求应如下所示:
$(document).ready(function() {
//some even that will run ajax request - for example click on a button
var uname = $('#username').val();
$.ajax({
type: 'POST',
url: 'func.php', //this should be url to your PHP file
dataType: 'html',
data: {func: 'toptable', user_id: uname},
beforeSend: function() {
$('#right').html('checking');
},
complete: function() {},
success: function(html) {
$('#right').html(html);
}
});
});
和你的func.php
:
function toptable()
{
echo 'something happens in here';
}
//here you can do some "routing"
$func = $_POST['func']; //remember to escape it
switch ($func) {
case 'toptable':
toptable();
break;
default:
//function not found, error or something
break;
}
还要检查我是否将document.getElementById
更改为 jQuery 选择器 $('#...')
。
PHP 是服务器端,JS 是客户端。你需要在 ajax 请求中调用 PHP 脚本,而不是函数。
类似的东西
[...]
var url = "func.php";
$.ajax({
type: 'POST',
url: url,
[...]
功能.php
<?php
function toptable()
{
echo "something happens in here";
}
toptable();
?>
在这种情况下,ajax 请求的成功处理程序中的 html
参数将等于 "something happens in here"
。
有意义吗? - 不。你不能将PHP(一种服务器端技术)与Javascript(客户端)混合使用。可以使用 AJAX 请求服务器为您执行某些功能,但不能将函数名称用作 URL。您应该创建一个 PHP 页面来接受您的 AJAX 请求,执行该函数并返回结果,并在您的 AJAX 请求中使用该页面的 URL