通过AJAX请求PHP脚本。AJAX请求返回实际的PHP脚本

通过AJAX请求PHP脚本。AJAX请求返回实际的PHP脚本,php,ajax,json,Php,Ajax,Json,正在从php脚本请求JSON: var channelList; $(document).ready(function() { $.ajax({ url: 'channellookup.php', dataType: 'json', error: function(){console.log(arguments)}, success: function(data) {

正在从php脚本请求JSON:

var channelList;

$(document).ready(function() {
    $.ajax({    
        url: 'channellookup.php',    
        dataType: 'json',    
        error: function(){console.log(arguments)},     
        success: function(data) {
            console.log(data.success);
            channelList = data;
        }  
    });
});
现在来看有趣的部分:控制台中的错误消息如下所示:

Arguments { 0: XMLHttpRequest, 1: "parsererror", 2: "Invalid JSON: <?php
   header('Content-type: application/json');     // To ensure output json type.
   class MyDB extends SQLite3
   {
参数{0:XMLHttpRequest,1:“parsererror”,2:“无效JSON:
正如你所看到的,我使用json编码。正如我所说,这在终端中是有效的。 请记住,我还不想在html中使用json,因此在异步请求完成之前生成的页面还不是问题


问题是否可能是我不是在远程服务器上而是在本地文件上执行此操作?据我所知,浏览器应该能够处理此情况。

发送标头后,您将从数据库回显连接状态

删除以下行:

    if(!$db){    
      echo $db->lastErrorMsg();    
   } else {    
      echo "Opened database successfully\n";    
   }
并将标题置于JSON输出之上:

header('Content-type: application/json');   
echo json_encode($channelList);
$db->close();

发送标头后,您将从数据库回显连接状态

删除以下行:

    if(!$db){    
      echo $db->lastErrorMsg();    
   } else {    
      echo "Opened database successfully\n";    
   }
并将标题置于JSON输出之上:

header('Content-type: application/json');   
echo json_encode($channelList);
$db->close();

我很确定你的PHP根本没有编译。这是因为返回的结果实际上是你的PHP文件的
body
,表明没有进行翻译

您可以通过创建一个包含以下代码的文件来检查PHP实例是否正在运行:

<?php phpinfo() ?>

并使用浏览器导航到该页面,查看是否有任何输出。要检查PHP/Apache安装,直到输出正确


至于你的webtool为什么工作,我无法想象任何原因。它应该以同样的方式失败。

我很确定你的PHP根本没有编译。这是因为返回的结果实际上是你的PHP文件的
正文,表明没有进行翻译

您可以通过创建一个包含以下代码的文件来检查PHP实例是否正在运行:

<?php phpinfo() ?>

并使用浏览器导航到该页面,查看是否有任何输出。要检查PHP/Apache安装,直到输出正确



至于你的webtool为什么工作,我无法想象任何原因。它应该以同样的方式失败。

remove
header('Content-type:application/json')
从您的php文件中再次检查结果仍然相同您确定您的php文件位于可以运行php的服务器上吗?如果您直接在web浏览器中转到channellookup.php,会得到什么?它位于我的本地计算机上。我也有一台服务器正在运行,但可能配置错误,我将选中Remove
header('Content-type:application/json')
从您的php文件中再次检查结果仍然相同您确定您的php文件位于可以运行php的服务器上吗?如果您直接在web浏览器中转到channellookup.php,您会得到什么?它位于我的本地计算机上。我也有一台服务器正在运行,但可能配置错误,我会检查您是否正确。此代码是从我编辑了它,但忘记了编辑你提到的部分。你当然是对的。这段代码取自教程,在回音后也有一条成功消息。我编辑了它,但忘记了编辑你提到的部分。我只是检查了termi生成的字符串nal
$php channellookup.php
,它是有效的。我想我的Web服务器无法满足请求。据我所知,浏览器能够处理xmlhttprequests,但当然不能处理php本身。我将检查我的服务器配置。服务器与我正在开发的机器是同一台机器。你的结论是错误的,因为你在shell中包含
$php
,意味着您的服务器绑定到该模块并将对其进行解析。当您执行
$php channellookup.php
时,您正在解析代码。因此,它会运行并返回您的数据。但是,当您从浏览器发出web请求时,它需要转到服务器,如Apache,然后由该服务器决定文件是否可用您已经请求了(通常是通过文件扩展名,在本例中是
*.*php
)需要进行解析,然后对其进行解析。否则,您的浏览器请求永远无法访问shell
$php
模块。此外,请按照@Joerg所述进行更改。是的,我确实运行了apache,但可能是配置错了。我重新安装了服务器,现在它可以工作了。谢谢!我只是检查了终端生成的字符串
$php channellookup.php
并且它是有效的。我想我的Web服务器不能满足请求。据我所知,浏览器能够处理xmlhttprequests,但当然不能处理php本身。我将检查我的服务器配置。服务器与我正在开发的机器是同一台机器。你的结论是错误的,因为你shell中的ve
$php
意味着您的服务器绑定到该模块,因此将对其进行解析。当您执行
$php channellookup.php
时,您正在解析代码。因此,它会运行并返回您的数据。但是,当您从浏览器发出web请求时,它需要转到服务器,如Apache,然后由该服务器决定文件是否您已请求(通常是通过文件扩展名,在本例中为
*.*php
)需要进行解析,然后对其进行解析。否则,您的浏览器请求将永远无法访问shell
$php
模块。此外,请按照@Joerg所述进行更改。是的,我确实运行了apache,但可能是配置错了。我重新安装了服务器,现在可以正常工作了。谢谢!