如何解释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>

代码从哪里开始执行,是什么调用了什么?"getDBData"被引用了四次。

1( json_encode内部的引用是否首先被调用?它调用的是PHP函数吗?

2( 它如何知道在哪个文件中找到它?

3( 似乎在脚本的最后一行,getDBData被第二次调用,这一次它被传递给了另一个函数(来自Javascript(,但"data"变量指的是什么?

4( 为什么该函数的结果被分配给"dbdata"。它似乎在任何地方都不常用。这可能只是因为它只是一个片段,并且在其他地方使用。

5( 为什么函数(回调(被分配到与PHP函数相同的名称?

1(是的,它是PHP函数。但这不是函数第一次被调用。第一次是echo getDBData();

2( 函数必须在当前PHP文件或任何包含/必需的PHP文件中定义。PHP将不会在这之外寻找定义。为了让这个片段发挥作用,在"html文件"(实际上必须是一个PHP文件(的顶部,可能会有这样一行:<?php require('data.php'); ?>。但随后它将与输出相呼应。。。所以,也许将函数定义复制并粘贴到这个文件中会更容易一些?我认为这个片段需要一些工作。

3( 首先,对getDBData的调用是对javascript函数的第一个也是唯一一个调用。JavaScriptgetDBData函数将它得到的任何参数传递给jquery promise(完成(。该函数需要一个作为函数的参数。如果您选择接受,提供给done((的函数将传递几个参数。在这种情况下,传入的函数将接受第一个参数,即从AJAX请求中获得的数据。编写此代码的人深思熟虑地选择将该参数称为"data",但任何任意名称都是有效的。

4( 你是对的,它没有在片段中的任何地方使用。

5( 因为写这篇文章的人希望代码尽可能令人困惑?我们只能推测。我的意思是,他们选择包含jquery来做一个简单的AJAX请求,我们真的能指望作者有什么意义吗?但说真的,没有必要对两者使用相同的名称。

最新更新