当通过ajax调用页面时,在php脚本中未初始化解析

当通过ajax调用页面时,在php脚本中未初始化解析,php,jquery,ajax,parse-platform,Php,Jquery,Ajax,Parse Platform,在php/loginManager.php中我有 require 'vendor/autoload.php'; require 'php/contentManager.php'; session_start(); use Parse\ParseClient; ParseClient::initialize('XXXXX', 'XXXXX', 'XXXXX'); use Parse\ParseObject; use Parse\ParseUser; use Parse\ParseExcept

php/loginManager.php中
我有

require 'vendor/autoload.php';
require 'php/contentManager.php'; 
session_start();


use Parse\ParseClient;
ParseClient::initialize('XXXXX', 'XXXXX', 'XXXXX');
use Parse\ParseObject;
use Parse\ParseUser;
use Parse\ParseException;
use Parse\ParseQuery;
use Parse\ParseACL;
use Parse\ParseRole;

function checkLoggedIn(){
    $currentUser = ParseUser::getCurrentUser();
    if ($currentUser) {
        echo 'logged in';
    } 
    else {
        echo 'NOT logged in';
    }
}
include("php/loginManager.php");
checkLoggedIn();

settings.php中
我有

require 'vendor/autoload.php';
require 'php/contentManager.php'; 
session_start();


use Parse\ParseClient;
ParseClient::initialize('XXXXX', 'XXXXX', 'XXXXX');
use Parse\ParseObject;
use Parse\ParseUser;
use Parse\ParseException;
use Parse\ParseQuery;
use Parse\ParseACL;
use Parse\ParseRole;

function checkLoggedIn(){
    $currentUser = ParseUser::getCurrentUser();
    if ($currentUser) {
        echo 'logged in';
    } 
    else {
        echo 'NOT logged in';
    }
}
include("php/loginManager.php");
checkLoggedIn();

当我在浏览器中加载
settings.php
时,我会像预期的那样“登录”

我希望通过ajax获得这个结果。这就是我所尝试的:

    var $target =$('#someElement');
    var dataString ='someVar=someValue';
    $.ajax({
      type: "POST",
      url: 'settings.php',
      data: dataString,
      success: function(payload) {
         $target.html(payload);
      },
      error: function(xhr, status, error) {
        var err = eval("(" + xhr.responseText + ")");
        console.log(err.Message);
      }
    });
不幸的是,这会产生以下错误:

致命错误:对第333行的/Users/DOoDSoftware/Sites/project/vendor/parse/php sdk/src/parse/ParseUser.php中的非对象调用成员函数get()

添加了var_dump的
ParseUser.php
的第332-333行:

    $storage = ParseClient::getStorage();
    echo var_dump($storage); // this test echoes NULL
    $userData = $storage->get("user"); // the line that generates the error
我将此echo添加到parse初始化函数中:

public static function initialize($app_id, $rest_key, $master_key, $enableCurlExceptions = true)
{
    echo('parse initialized'); 

     //....
}
“parse initialized”是在我实际访问
settings.php时打印的,而不是在我调用ajax时打印的

显然,当我调用ajax时,解析没有得到初始化

  • 为什么在进行ajax调用时解析没有初始化?
  • 在进行ajax调用时,如何初始化解析?

  • 更新: 我通过将调用移动到
    require'php/contentManager.php'来实现它如下所示

    require 'vendor/autoload.php';
    // require 'php/contentManager.php';  removed from here
    session_start();
    
    
    use Parse\ParseClient;
    ParseClient::initialize('XXXXX', 'XXXXX', 'XXXXX');
    use Parse\ParseObject;
    use Parse\ParseUser;
    use Parse\ParseException;
    use Parse\ParseQuery;
    use Parse\ParseACL;
    use Parse\ParseRole;
    
    require 'php/contentManager.php'; // added it back down here
    

    它现在可以工作了,但是如果有人能解释一下为什么这可以解决问题,我会非常感激。

    您正在将数据发送到php页面,那么settings.php在访问
    settings.php?someVar=someValue
    时的行为是否会有所不同?(或者当你执行一篇实际的文章时,当然。)@MrLister建议不错,但是不行,访问
    settings.php?someVar=someValue
    会产生预期的结果。你是否尝试使用ajax作为GET?@charlietfl我刚才做的,没有骰子。通过将调用移动到
    require'php/contentManager.php',我也能够让它与ajax调用一起工作to。见我的更新上面。它现在可以工作了,但我很想了解原始设置的实际问题。我也可以在init下移动它。您正在将数据发送到php页面,因此当您访问
    settings.php?someVar=someValue
    时,settings.php的行为是否会有所不同?(或者当你执行一篇实际的文章时,当然。)@MrLister建议不错,但是不行,访问
    settings.php?someVar=someValue
    会产生预期的结果。你是否尝试使用ajax作为GET?@charlietfl我刚才做的,没有骰子。通过将调用移动到
    require'php/contentManager.php',我也能够让它与ajax调用一起工作to。见我的更新上面。它现在可以工作了,但我很想了解原始设置的实际问题。在init下移动它也可以工作。
    
    require 'vendor/autoload.php';
    require 'php/contentManager.php'; 
    session_start();
    
    
    use Parse\ParseClient;
    ParseClient::initialize('XXXXX', 'XXXXX', 'XXXXX');
    use Parse\ParseObject;
    use Parse\ParseUser;
    use Parse\ParseException;
    use Parse\ParseQuery;
    use Parse\ParseACL;
    use Parse\ParseRole;
    
    function checkLoggedIn(){
        $currentUser = ParseUser::getCurrentUser();
        if ($currentUser) {
            echo 'logged in';
        } 
        else {
            echo 'NOT logged in';
        }
    }
    
    include("php/loginManager.php");
    checkLoggedIn();