当通过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调用一起工作调用初始化解析后的code>to。见我的更新上面。它现在可以工作了,但我很想了解原始设置的实际问题。我也可以在init下移动它。您正在将数据发送到php页面,因此当您访问settings.php?someVar=someValue
时,settings.php的行为是否会有所不同?(或者当你执行一篇实际的文章时,当然。)@MrLister建议不错,但是不行,访问settings.php?someVar=someValue
会产生预期的结果。你是否尝试使用ajax作为GET?@charlietfl我刚才做的,没有骰子。通过将调用移动到require'php/contentManager.php',我也能够让它与ajax调用一起工作调用初始化解析后的code>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();