使用Javascript发送动态POST数据

时间:2014-09-03 16:06:46

标签: javascript php html forms post

基本上,我试图通过POST将一些数据发送到远程PHP页面,其中包含4个静态参数和一个随机参数,一个数字。 到目前为止,我所做的是创建一个HTML页面,其中包含4个隐藏字段和1个空字段的表单,其中通过Javascript(使用Math.random)插入随机数作为值。现在,每当我提交此表单时,它都会将我带到远程PHP页面,因此我必须再次单击(在浏览器中)然后提交。

所以,我决定在另一个HTML页面的iFrame中加载这个表单,所以在点击提交后,我可以点击刷新,然后再次提交。

我想知道,有没有办法可以在父HTML中使用Javascript在iFrame中自动提交表单,然后创建一个新的随机值并再次提交?

到目前为止,这是我的代码

a.html

<html>
<body>
<form method="post" action="http://awebsite.com/remotefile.php">
*some hidden fields with the static values*
<input type="text" id="mytext" name="mobile_no">
<input type="submit">
</form>
<script>//don't remember the exact code, use javascript to generate a random number which is put in the value for mytext via getElementById</script>
</body>
</html>

现在这是手动将数据发送到服务器的形式

这是加载iframe: b.html

<html>
<body>
<iframe src="a.html">
</body>
</html>

我可以在b.html中使用javascript多次重新发送表单,但每次都有不同的mobile_no值吗? 或者我可以通过简单的Javascript(或PHP)

简单地将带有参数的POST数据发送到服务器

1 个答案:

答案 0 :(得分:1)

您的问题不是100%明确,但听起来您想要异步发布表单数据。您可以使用jQuery之类的JavaScript库轻松完成此操作,而无需使用iframe。首先,您应该为表单添加ID属性,以便更容易在jQuery代码中引用。然后,您可以将事件监听器附加到表单的提交事件,您可以在提交之前自定义表单并处理响应

$('#myForm').submit(function(e) {

    // prevent default form submit action from occuring
    e.preventDefault();

    // load values need to make AJAX request
    var method = $(this).attr('method');
    var action = $(this).attr('action');

    // Process Ajax request
    $.ajax({
        type: method,
        url: action,
        dataType: 'html',
        data: $(this).serialize(),
        beforeSend: function() {

            // generate and assign per form submit random number
            // show loading gif

        },
        success: function(response) {

            // AJAX POST success, insert the HTML response into the DOM

        },
        error: function(jqXHR, textStatus, errorThrown) {

            // console.log any errors for debugging here

        },
        complete: function() {

            // Post completion tasks, such as hide loading gif

        }
    });
});