我是php的新手
<?php
getDBData(){
//log the call
$fetchedData = myDbCode.fetchData();
return
}
?>
<script type="text/javascript">
dbData = <?php echo json_encode(getDBData()); ?>
</script>
正如日志中所观察到的那样,getDBData在页面加载过程中只被调用一次,甚至在dbData = <?php echo json_encode(getDBData()); ?>
此代码后调用getDBData()
也不会发生。{/ p>
任何想法为什么调用getDBData()只发生在页面加载而不是之后
如何从javascript调用getDBData()
答案 0 :(得分:14)
你实际上并不了解它是如何运作的。
Javascript是一种客户端语言,这意味着它在Web浏览器中执行。 PHP是服务器端,这意味着它在服务器上执行。
在处理请求时,首先执行PHP,将响应返回给用户,然后执行Javacript。
要在客户端和服务器之间进行通信,您可以使用ajax请求,这些请求基本上是简单的http请求,但不会重新加载整个页面。
答案 1 :(得分:10)
你应该使用Ajax。即你有一个php文件,它返回函数的输出:
// data.php
<?php
function getDBData(){
//log the call
$fetchedData = myDbCode.fetchData();
return $fetchedData;
}
echo getDBData();
?>
// html file
<script type="text/javascript">
var getDBData = function(callback) {
$.ajax({
url: "data.php"
}).done(callback);
}
var dbData = <?php echo json_encode(getDBData()); ?>
getDBData(function(data) {
dbData = data;
})
</script>
上面的代码使用jQuery。
答案 2 :(得分:0)
您可以通过 ajax 来完成。
的链接答案 3 :(得分:0)
使用jquery
$.ajax({
url: 'yourpage.php',
type: 'POST',
data:'',
success: function(resp) {
// put your response where you want to
}
});
答案 4 :(得分:0)
您不能直接从javascript调用PHP函数。
你必须将getDBDate“外包”到一个自己的.php文件,在那里你输出json_encoded字符串并用ajax调用这个文件并得到页面的输出。
在javascript中最容易做的AJAX请求是使用JQuery库:http://api.jquery.com/jQuery.ajax/
答案 5 :(得分:0)
你可以使用AJAX将服务器端的php值转换为javascript变量阅读这个ajax示例并实现它。
// Launch AJAX request.
$.ajax(
{
// The link we are accessing.
url: jLink.attr( "href" ),
// The type of request.
type: "get",
// The type of data that is getting returned.
dataType: "html",
error: function(){
ShowStatus( "AJAX - error()" );
// Load the content in to the page.
jContent.html( "<p>Page Not Found!!</p>" );
},
beforeSend: function(){
ShowStatus( "AJAX - beforeSend()" );
},
complete: function(){
ShowStatus( "AJAX - complete()" );
},
success: function( strData ){
ShowStatus( "AJAX - success()" );
// Load the content in to the page.
jContent.html( strData );
}
}
);
// Prevent default click.
return( false );
}
);