Drupal外部PHP Ajax请求错误

Drupal外部PHP Ajax请求错误,php,ajax,drupal,Php,Ajax,Drupal,所以我觉得这可能是我错过的一些简单的东西,我已经寻找了一段时间来找出什么是错的,但到目前为止没有运气。因此,提前感谢您的帮助 我有一个功能齐全的PHPWeb应用程序,其中包括一个js文件,该文件使用简单的ajax调用从外部php文件获取信息 $.ajax({ url:'loadlevels.php', type: "POST", dataType:'json', async: false, data: ({level: 'loadCategory

所以我觉得这可能是我错过的一些简单的东西,我已经寻找了一段时间来找出什么是错的,但到目前为止没有运气。因此,提前感谢您的帮助

我有一个功能齐全的PHPWeb应用程序,其中包括一个js文件,该文件使用简单的ajax调用从外部php文件获取信息

$.ajax({
     url:'loadlevels.php',
     type: "POST",
     dataType:'json',
     async: false,
     data: ({level: 'loadCategory', value: value}),
     success: function(data){
            fillCategory(data);//get the data for category contents
            if (bookmarking === false) {
                TargetPieceLoader( $('#categorySelect div li.category-selected') );//Next level of function called
            }
            getSliderCategory(); //
            changeCategoryArrowColor(); //call Css arrow features
        }//success function
    });//ajax call
我们没有将它直接集成到Drupal中,因为我们希望代码的格式能够与我们计划在不久的将来合并的其他程序兼容

根据Chrome的开发工具网络功能加载loadlevels.php页面。 该脚本返回JSON数据,该数据应返回一些html,这些html以原始php文件的正确格式读取。这很有效。当我在dev工具的Network->response选项卡下查看响应时,应该返回如下所示:

{"stringfront":"<div id='pre-k-cat-front' style='display:block;position:absolute;z-index:10;position:inherit;margin-left:25px;'><div class='swiper-container-category'><div class='swiper-wrapper'><div class='swiper-slide'><li class='category-selection category-selected' id='cat0' value='4'><a href='javascript:;' id style='background:none;'>LETTER KNOWLEDGE<\/a><\/li><\/div><div class='swiper-slide'><li class='category-selection ' id='cat1' value='5'><a href='javascript:;' id style='background:none;'>RHYMING<\/a><\/li><\/div><div class='swiper-slide'><li class='category-selection ' id='cat2' value='6'><a href='javascript:;' id style='background:none;'>ALLITERATION<\/a><\/li><\/div><\/div><\/div><\/div>"}
{“stringfront”:“
  • 字母知识
  • 押韵
  • 头韵”}
  • 然而,'loadlevels.php'显示它正在网络选项卡中运行,单击调用此ajax函数的相关按钮,响应选项卡为空,因此,我没有返回任何数据,甚至在调用它时也没有简单的回显调用

    在我的本地机器上运行时,它工作得非常好,但当我将它移动到Drupal时,它似乎就坏了,即使所有内容都通过正确的Drupal节点上的include语句链接到关联的文件,如图所示:

    <?php include "./sites/**********/library.php"; ?>
    
    
    

    我不知道它是如何在这一点上打破。我假设存在某种Drupal特性或缺少模块或函数等,从而阻止访问它或诸如此类的东西。

    创建一个模块以返回json非常容易。
    与任何其他模块一样,您的模块必须同时具有.info文件和.module文件。
    将类似的内容放入您的.info文件中

    name = My Module Name  
    description = Returns some JSON.  
    core = 7.x
    
    您的.module文件将需要。
    1。要实现钩子菜单():

    2。从loadlevels函数返回JSON

    function loadlevels_function() {
      // do stuff here such as check $_POST['level'] and return the results.
      // return can be an object or array or whatever.
      results = array('testing', 'testing again');
      drupal_json_output($result);
    }
    
    就是这样,您现在应该能够导航到“loadlevels”,并在浏览器中以JSON对象的形式查看结果,或者通过ajax获取结果,如下所示

    $.ajax({
         url:'loadlevels',
         dataType:'json',
         data: ({level: 'loadCategory', value: value}),
         success: function(data, textStatus, jqXHR){
                console.log(data);
         },
         error: function(jqXHR, textStatus, errorThrown){console.log(textStatus);}
    });
    

    这应该可以在drupal站点上正常工作。jQueryAjax调用函数不需要任何特殊的模块或函数。您确定页面上没有错误吗?页面上没有记录错误,现在看来ajax语句运行了,但php没有正确运行。我使用一个测试脚本来加载ajax语句,该语句返回ajax success语句,但没有像它应该有的那样响应php。这是我写的:当我读到上面的错误时删除了,你说“这在我的本地机器上运行非常好,但当我将它移动到Drupal时,它似乎就坏了,尽管所有内容都通过正确的Drupal节点上的include语句链接到关联的文件,如图所示:“与我有关。是什么让你认为你可以把它包含在一个节点页面上呢?我将发布一个答案,详细说明如何创建一个返回JSONGreat的模块!谢谢你的帮助!
    $.ajax({
         url:'loadlevels',
         dataType:'json',
         data: ({level: 'loadCategory', value: value}),
         success: function(data, textStatus, jqXHR){
                console.log(data);
         },
         error: function(jqXHR, textStatus, errorThrown){console.log(textStatus);}
    });