【发布时间】:2019-04-26 00:17:20
【问题描述】:
我陷入了无法轻松处理的问题。
我创建了一些字段(输入和选择)而不使用<form> 标签。
当用户单击“研究”按钮时,将启动以下脚本:
- 从字段中获取所有值,
-
使用 DATATABLES 插件将所有字段发送到 Php 页面。 代码如下:
函数assetSearch() {
var 验证 = checkForSelectedFields();
if (validation == "KO") return; var arrForm = []; arrForm.push(document.getElementById("name").value); arrForm.push(document.getElementById("idConfig").value); arrForm.push(document.getElementById("serialNumber").value); arrForm.push(document.getElementById("tipo").value); arrForm.push(document.getElementById("ambiente").value); arrForm.push(document.getElementById("modello").value); arrForm.push(document.getElementById("locazione").value); arrForm.push(document.getElementById("vendor").value); arrForm.push(document.getElementById("gruppo").value); arrForm.push(document.getElementById("stato").value); arrForm.push(document.getElementById("classe").value); arrForm.push(document.getElementById("securityLevel").value); arrForm.push(document.getElementById("aggregatore").value); console.log(JSON.stringify(arrForm)); var outcomeResearchTable = document.getElementById("OUTCOME_RESEARCH_TABLE"); outcomeResearchTable.style.display = "flex"; $('#OUTCOME_RESEARCH_TABLE').DataTable( { // "ajax": { // "url": "asset_GestAsset.php", // "type": "POST", // "data": function(d) { // d.form = $("#researchForm").serializeArray(); // } //}, "paging": true, "processing": true, "ajax": "asset_GestAsset.php", "deferLoading": 57, "deferRender": true, "scrollY": 350, "scrollX": true, "bRetrieve": true, "bDestroy": true, "iDisplayLength": 100, "ordering": false, "info": true, "sDom": 'ltipr', "order": [[1, 'asc']] } );}
所有字段都不是必填项,但至少必须编译一个文本输入。关键是 Datatables 使用前面显示的代码向我发送了一个错误:DataTables warning: table id=OUTCOME_RESEARCH_TABLE - Invalid JSON response。有关此错误的更多信息,请参阅http://datatables.net/tn/1
只是为了测试,我决定尝试查询并在数据表上显示值,所以我决定不关心 Ajax 问题,但另一个问题来了:Php 告诉我“内存不足”。查看谷歌开发者控制台我被告知在列下:状态(内部网络)php页面处于“待处理”状态大约30秒,错误是:
致命错误:内存不足(已分配 559939584)(试图 分配25165832字节)在
<?php
ini_set('memory_limit', '-1');
include("function.php");
$conn = connectionDB();
$queryOriginale = " select A.ID_CONFIG IDCONF, A.ID_ASSET IDASSET, A.NOME NOME,B.SERIAL_NUMBER SERIALNUMBER, B.TIPO TIPOLOGIA, C.DESCRIZIONE STATO, E.NOME AGGREGATORE,
F.ID_CED,F.SALA,F.FILA,F.POSIZIONE,D.NOME AMBIENTE , H.NOME MODELLO, G.DESCRIZIONE NOMECED, 'n/a' CONTRATTO, A.VALIDA_DAL VALIDADAL,A.VALIDA_AL VALIDAAL
from
PCMDB_INV.ASSET B, PCMDB_INV.CONFIG A, PCMDB_INV.STATO C, PCMDB_INV.AMBIENTE D,
PCMDB_INV.AGGREGATOR E, PCMDB_INV.LOCAZIONE F, PCMDB_INV.CED G, PCMDB_INV.MODELLO H,
PCMDB_INV.SOFTWARE L, PCMDB_INV.SW_CONFIG O, PCMDB_INV.GRUPPO M, PCMDB_INV.TECH_APPLICATION N,
PCMDB_INV.SECURITY_LEVEL P, PCMDB_INV.SEC_LEVEL_CONFIG Q";
$SSS = oci_parse($conn, $queryOriginale);
oci_execute($SSS);
$NUM = oci_fetch_all($SSS, $res);
$stid = oci_parse($conn, $queryOriginale);
oci_execute($stid);
$i = 0;
echo "{ \"aaData\": [\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
$i++;
$a = trim($row["IDCONF"]);
$b = trim($row["NOME"]);
$c = trim($row["TIPOLOGIA"]);
$d = trim($row["STATO"]);
$e = trim($row["AMBIENTE"]);
$f = trim($row["AGGREGATORE"]);
$f2 = trim($row["NOMECED"]);
$g = trim($row["MODELLO"]);
$h = trim($row["CONTRATTO"]);
$l = trim($row["VALIDADAL"]);
$m = trim($row["VALIDAAL"]);
if ($i < $NUM){
echo "[ \"".$a."\", \"".$b."\", \"".$c."\", \"".$d."\", \"".$e."\", \"".$f."\", \"".$f2."\", \"".$g."\", \"".$h."\", \"".$l."\", \"".$m."\" ], \n";
}else {
echo "[ \"".$a."\", \"".$b."\", \"".$c."\", \"".$d."\", \"".$e."\", \"".$f."\", \"".$f2."\", \"".$g."\", \"".$h."\", \"".$l."\", \"".$m."\" ]\n";
}
}
echo "] }";
?>
有人可以帮我解决这两个问题吗? 非常感谢提前
【问题讨论】: