gpt4 book ai didi

php - 从同一类访问已设置的属性将返回 null

转载 作者:行者123 更新时间:2023-11-29 15:26:24 26 4
gpt4 key购买 nike

我试图在表中显示查询记录,并单击按钮进行 ajax 调用以下载 xml 格式的信息。查询是从类内的方法执行的,并且 ajax 请求调用同一类内的不同方法。第一个方法填充类内的两个私有(private)属性,第二个属性(通过 ajax 请求调用的属性)必须读取属性并填充表内的数据并使文件可下载。当我尝试从同一个类读取属性时,虽然我得到空值并且 foreach 返回错误。

这是我的ajax请求(downloaderScript.js):

;
$("#downloadBtn").click(function (event) {
event.preventDefault();
event.stopPropagation();
$.ajax({
url: 'allClients.php',
type: 'post',
data: {action: 'downloader'},
complete: function (result) {
console.log(result);
},
error: function () {
console.log('Error');
}
});
});

这是我调用第一个和第二个方法的类:

class HttpHandlerClient extends HttpHandlerAbstract
{
private $clientsService;
public $storedClientsHeadings;
public $storedClientsData;

public function viewAllClients()
{
$data = $this->clientsService->getAllClients(clientEntity::class);
if(isset($data)) {
$this->storedClientsHeadings = ["Client Names:", "Delivery Address:", "Phone number:"];
$this->storedClientsData = $data;
$this->render('allClientsView', $data);
}
else
{
$this->redirect('clientAdd');
}

}

public function downloader()
{
header("Content-Type: text/plain");
var_dump($this->storedClientsHeadings);
foreach ($this->storedClientsHeadings as $arrayName)
{
echo implode("\t", $arrayName)."\r\n";
}
/**
* @var clientEntity $clientData
*/
foreach ($this->storedClientsData as $clientData)
{
echo implode("\t", $clientData->getClientName())."\r\n";
echo implode("\t", $clientData->getAddressForDelivery())."\r\n";
echo implode("\t", $clientData->getPhone())."\r\n";
}
$filename = "clients_".date("Y-m-d").".xls";
header("Content-Disposition:attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");
}

这是我在ajax请求和php类之间使用的php文件(文件名是:allClients.php,在common.php中我制作类 HttpHandlerClient 的实例):

require_once 'common.php';

if(isset($_POST['action'])){
$myHttpHandlerClient->downloader();
} elseif (isset($_GET['typer'])) {
$myHttpHandlerClient->viewClientByNumber($_GET['typer']);
} else {
$myHttpHandlerClient->viewAllClients();
}

抱歉,如果我的问题很微不足道,我什至开始怀疑在 require_once 之后我重新运行 common.php 中的代码,创建了一个 HttpHandlerClient 的新实例,因此我在特性。但是当我阅读 php 网站的文档时,我没有读到这样的东西。任何帮助将不胜感激,谢谢。

最佳答案

听起来可能发生的情况是,最初加载的 JavaScript 与添加到 DOM 的更多标记之间存在脱节。

  1. 页面加载并运行您的 JavaScript。此时 JS 只知道当前页面上有什么。
  2. 您进行的第一个调用会更改 DOM。您的 JavaScript 不知道这些更改。
  3. 您尝试引用初始加载的 Javascript 无法识别的内容。

在调用更改 DOM 后,您可能必须重新初始化 JS 才能识别更改。

祝你好运

关于php - 从同一类访问已设置的属性将返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59051778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com