使用ajax/jquery模拟html表单POST

use*_*803 4 html javascript php ajax jquery

我想从表单中读取所有的post变量及其内容,并使用jquery的"$ .post()"发布它们.首先,这不会起作用:$ .post("myServer.com/test2.php",$('#myform').serialize())因为它只发送一个我有的变量解析php方面.

以下是我的开始:

function doIndirectPost() {
    variableWithTheFormPOSTData = {};
    $("#IdOfMyForm :input").each(function() {
        variableWithTheFormPOSTData[$(this).attr("name")] = $(this).attr("value");
    }
    document.getElementById("IdOfMyForm").submit();
    $.post("myServer.com/test2.php", variableWithTheFormPOSTData);
}
Run Code Online (Sandbox Code Playgroud)

然后我想使用$ .post()来分隔多个变量中的数据(就像普通表单提交一样...我在某处读到,你可以这样做:

$.post('myserver.com/test2.php.php',{
    var1: content1,
    var2: content2
}
Run Code Online (Sandbox Code Playgroud)

但我希望它是动态的.这部分:

    var1: content1,
    var2: content2
Run Code Online (Sandbox Code Playgroud)

应自动包含表单的所有变量名称和值.

最后,我希望能够得到所有这些POST变量:

foreach ($_POST as $key => $value)
{
    echo $key . "= " . $value;
}
Run Code Online (Sandbox Code Playgroud)

cod*_*eak 5

Serialize不发送一个变量,它发送表单中所有输入元素的名称值对.所以

    $("#IdOfMyForm").on("submit", function () {
        $.post("myServer.com/test2.php", $("#IdOfMyForm").serialize(), 
                function(dataFromServer){
                   //server sent a response now do whatever you want to do after form has been submitted 
                   //or submit form regular way $("#IdOfMyForm").submit();
                 }
        );
        return false;
    });
Run Code Online (Sandbox Code Playgroud)

应该管用.只需记住在表单中设置每个输入/选择元素的名称属性.