是否可以在提交表单之前通过javascript向php $ _POST数据添加参数而不需要创建单独的隐藏输入标记?
我有一个使用ajax(非jQuery)的页面,它解析<td>
元素的innerText并将它们发送到php页面进行处理。
我现在要从该数据制作一个.csv文件(通过php页面),我不能再通过ajax这样做了。因此,我必须提交整个表格并离开页面。这样做时,我不知道如何将参数添加到$ _POST数据,就像我使用ajax一样。提交表单时,它只处理输入标记,我不能像使用ajax调用那样添加自定义数据。
谢谢!
编辑:Matthew要求的Ajax代码
function generateReport(saveReport)
{
xmlHttp=GetXmlHttpObject();
var params = [];
if(saveReport !== undefined)
{
params.push("reportName=" + document.myForm.reportName.value);
}
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var cols = document.myForm.colsUsedSel;
if(cols.options.length == 0)
{
alert("Please choose columns to view in the report.");
return;
}
//Loop through display columns
for(var i = 0; i < cols.options.length; i++)
{
params.push("displayCols[]=" + cols.options[i].value);
}
//Loop through <tr>'s of "where clause" table
var trList = document.getElementById("clauseTable").childNodes;
for(var x = 0; x < trList.length; x++)
{
var tdList = trList[x].childNodes;
for(var y = 0; y < tdList.length; y++)
{
var tdType = tdList[y].getAttribute("class");
//Check if there is a class for this <td>
if(!!tdType)
params.push(tdType + "=" + encodeURIComponent(tdList[y].innerText));
}
}
//Loop through <tr>'s of "order by" table
var trList = document.getElementById("orderByTable").childNodes;
for(var x = 0; x < trList.length; x++)
{
var tdList = trList[x].childNodes;
for(var y = 0; y < tdList.length; y++)
{
var tdType = tdList[y].getAttribute("class");
//Check if there is a class for this <td>
if(!!tdType)
params.push(tdType + "=" + encodeURIComponent(tdList[y].innerText));
}
}
if(document.myForm.generateCSV.checked)
params.push("generateCSV=1");
else
params.push("generateCSV=0");
params.push("sid="+Math.random());
xmlHttp.onreadystatechange= stateChangedGenerate;
xmlHttp.open("POST","reportBuilderDB.php",true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send(params.join("&"));
}