将参数添加到POST数据并提交

时间:2016-01-23 03:48:48

标签: javascript php html ajax

是否可以在提交表单之前通过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("&"));
}

0 个答案:

没有答案