我有一个处理发送确认电子邮件的PHP文件。我还有一个日历,可以使用AJAX进行各种更新。当AJAX调用更新文件时,它将使用新信息更新数据库,并且我希望发送确认电子邮件。
因此,从AJAX调用的php文件内部,我认为应该include("email- sender.php?stage=confirm2a&job={$slot->job_id}调用哪个电子邮件php页面,并带有$ _GET变量来告诉它发送哪些电子邮件以及向谁发送电子邮件。
include("email- sender.php?stage=confirm2a&job={$slot->job_id}
但是由于某些原因,当您使用?key=value附加到字符串的$ _GET对时,我无法使包含起作用。PHP.net告诉我可以在包含中使用$ _GET变量,但是当我设置一个简单的测试时,它似乎不起作用。
?key=value
我的测试页有一个链接,单击该链接会向页面提交ajax调用以及包含一个等于“动物”值的变量“农场”的数据。像这样:
$("a.testlink").click(function() { var mydata = "farm=animal"; $.ajax({ url: "ajaxPHP.php", data: mydata, success: function(rt) { alert(rt); } });
所以ajaxPHP.php说:
if($_GET['farm']) { $var = $_GET['farm']; echo $var; }
此时,单击链接时,成功警报将显示“动物”。那就对了。
但是,如果我将ajaxPHP.php更改为此:
if($_GET['farm']) { $var = $_GET['farm']; include("ajaxInclude.php?farm={$var}"); }
并有一个名为ajaxInclude.php的文件,其中说:
然后,当我单击链接时,我会收到一个空警报。因此,include不适用于附加到末尾的查询字符串。
有什么帮助吗?
加成
所以现在我有以下内容:
$stage = "confirm2a"; include("email-sender.php"); $stage = "confirm2b"; include("email-sender.php");
然后在email-sender.php中,显然有很多代码,例如:
if($stage == "confirm2a") { email Person 1 etc... } if($stage == "confirm2b") { email Person 2 etc... }
但是,当我运行脚本时,只有第1个人收到电子邮件,并且只有一次。不知道为什么
您可以在包含的脚本中处理变量,而不是将其附加到包含路径本身上:
$var = "foo"; include("script.php");
-script.php的内容-
echo $var; // 'foo'
我认为这反而更清洁。您可能希望script.php在回显任何变量之前检查以确保值存在于其中。
script.php