Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从AJAX响应程序脚本调用PHP类_Javascript_Php_Jquery_Ajax_Class - Fatal编程技术网

Javascript 从AJAX响应程序脚本调用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) {

我正试图通过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) {
    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;
}
?>