PHP和Ajax如果ajax调用相同的php页面,整个页面是否被重新评估/重新加载?

时间:2016-09-02 15:06:28

标签: php ajax

我有一个显示表单的PHP页面。按钮是一个按钮(不提交)。单击时,它们会调用Javascript中的函数并发出Ajax调用。 Ajax使用的URL是相同的php页面,传递变量。 php页面的顶部检查这些变量是否存在,如果存在,他们在数据库中工作,在对象中,将消息回显给Ajax并调用exit()。 我的问题是,在exit()之后重新评估/执行了php页面的其余部分?我似乎无法找到答案。基本上,在我调用exit()之后,如果我使用对象查询数据库以确定要显示的内容,是否会发生这种情况? 如果ajax调用相同的php页面,整个php是否重新评估?

1 个答案:

答案 0 :(得分:0)

简短回答:这取决于。如果设计得当,它不应该。

答案很长。通常你使用PHP脚本来提供HTML,在你的情况下这是它的作用 - 它返回显示表单的HTML,并且可能在提交时将解释结果。但是,PHP脚本(程序)可以做更多的事情。您应该将URL仅视为应用程序的入口点,而不是PHP脚本。此URL可以根据请求的类型提供不同的代码部分。例如,它可以检测到表单的某些部分正在对同一入口点执行AJAX请求,并将该调用转移到仅响应AJAX请求的代码的一部分。在PHP中,这种分支可以使用control structures完成。在检测到某些AJAX标头或发出POST请求时进行分支是PHP世界中非常常见的例子。

所以再次回答你的问题。如果为此分支代码,则不应重新评估整个页面,然后仅执行与AJAX请求相对应的代码部分,而不是创建HTML的代码部分。

示例:

if ($_SERVER['HTTP_X_REQUESTED_WITH']) {
    // treat the ajax request
}

if ($_SERVER['REQUEST_METHOD'] === "POST"){
    // do stuff for a POST request
}