我有一个表单的ajax发布,以便我可以完全按照此处显示的那样从PHP返回值:https://jonsuh.com/blog/jquery-ajax-call-to-php-script-with-json-return/。 虽然有一点点不同,我的response.php脚本是这样的:
<?php
session_start();
$email = $_SESSION['email'];
?>
<?php
if (is_ajax()) {
if (isset($_POST["action"]) && !empty($_POST["action"])) {
$action = $_POST["action"];
switch($action) {
case "test": test_function(); break;
}
}
}
function is_ajax() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
function test_function(){
$return = $_POST;
$x = $return["Profile"];
define('DB_NAME', 'STUDENTS');
define('DB_USER', 'STUDENTS');
define('DB_PASSWORD', 'PASSWORD');
define('DB_HOST','HOST');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
$db_selected = mysql_select_db(DB_NAME, $link);
$sql = "UPDATE `STUDENTS`.`Students` SET `Fbprofile` = '$x' WHERE `Students`.`StudEmail` = '$email' ";
$return["json"] = json_encode($return);
echo json_encode($return);
}
?>
正如您所看到的,唯一的区别是我正在更新SQL数据库。问题是我想更新Fbprofile列,其中StudEmail等于电子邮件会话变量。这个会话变量在所有其他页面中都能很好地工作,但我似乎无法在我的response.php中检索它。实际发生的是SQL更新有效,但只更新所有没有电子邮件值的行,所以我猜它不是在读取$ email变量。 非常感谢你的帮助。
答案 0 :(得分:4)
这是一个可变范围问题。您在$email
之外设置test_function
,因此在函数内部不可见。如果您启用了错误报告,您会看到有关未定义变量的通知。
你应该将它作为参数传递给函数:
case "test": test_function($email); break;
...
function test_function($email) {
...
}