Javascript 从AJAX响应程序脚本调用PHP类
我正试图通过AJAX访问PHP文件 当我使用一个简单的PHP文件时,如下所示:Javascript 从AJAX响应程序脚本调用PHP类,javascript,php,jquery,ajax,class,Javascript,Php,Jquery,Ajax,Class,我正试图通过AJAX访问PHP文件 当我使用一个简单的PHP文件时,如下所示: <?php header('Content-Type: text/html; charset=utf-8'); header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0'); $mode = $_POST['ajax_mode']; switch ($mode) {
<?php
header('Content-Type: text/html; charset=utf-8');
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');
$mode = $_POST['ajax_mode'];
switch ($mode) {
case "test":
if (isset($_POST['...'])) {
$test = $_POST['...'];
echo $test;
}
break;
}
?>
编辑:这里是使用类的服务器端脚本,用这个版本我得到了内部服务器错误
<?php
include '../../sql.php';
header('Content-Type: text/html; charset=utf-8');
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');
$mode = $_POST['ajax_mode'];
switch ($mode) {
case "test":
if (isset($_POST['...'])) {
$ace = $_POST['...'];
$sql = new sql_();
echo $sql->execute();
}
break;
}
?>
我的建议和可能的答案-将您的
包含在标题后:
<?php
header('Content-Type: text/html; charset=utf-8');
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');
include '../../sql.php';
$mode = $_POST['ajax_mode'];
switch ($mode) {
case "test":
if (isset($_POST['...'])) {
$ace = $_POST['...'];
$sql = new sql_();
echo $sql->execute();
}
break;
}
?>
如果您首先包含一个文件(可能会产生错误消息),然后发送头,则可能会导致问题。根据经验法则,PHP
中的头应该总是在任何输出发生或可能发生之前设置(除非您使用的是输出缓冲,但这是另一种情况)
如果这没有帮助-您是否已经尝试完全省略标题了?我找到了一个答案:D
我在ajax响应程序中未包含的sql类调用另一个类,但该类未知,因为我没有包含该类的文件
我包含了新文件,一切都正常:)您能显示服务器日志吗?您能共享导致错误的服务器端脚本(使用其他类的版本)吗?对不起,我没有服务器日志。@JGDarvell有什么建议吗?错误在两行中的一行:$sql=new sql();或echo$sql->execute();注释掉“echo”行并回显其他内容-看看这是否有效。我确信是sql_u3;()类中的某些东西导致了问题,无论是在创建对象时还是在execute方法中-让我们看看是哪一个。我尝试了你的第一个建议和第二个建议,但不幸的是,它不起作用,现在我很沮丧。你能得到同样的错误吗?您能复制粘贴错误消息的精确副本吗?是的,我收到了相同的错误,我的错误消息是:“请求已完成,但不正常。错误:内部服务器错误,500”您是否仔细检查了指向sql.php
的路径是否正确?如果删除所有内容(除了include
-行)并单独打开php页面(不是通过ajax),会发生什么?当所有内容都被注释(除了include和sql对象)并且.php文件通过浏览器在服务器上打开时,则不会发生任何事情。没有显示错误,这是什么?
<?php
header('Content-Type: text/html; charset=utf-8');
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');
include '../../sql.php';
$mode = $_POST['ajax_mode'];
switch ($mode) {
case "test":
if (isset($_POST['...'])) {
$ace = $_POST['...'];
$sql = new sql_();
echo $sql->execute();
}
break;
}
?>